C中函数的形参必须要用指针才行吗?
本帖最后由 一剑飘零 于 2022-1-15 21:00 编辑一个简单的数字前后位置互换,很奇怪为什么传不了值?有的函数为什么可以传值?新手勿喷。#include <stdio.h>
int huhan(int a,int b);
int huhan(int a,int b){
int temp;
temp = a;
a=b;
b=temp;
return a,b;
}
int main()
{
int a = 5,b =6;
huhan(a,b); //就算我写:huhan(5,6); 这样还是不行,就是不执行互换。难道真的只有指针才行吗?
printf("a=%d,b=%d",a,b);
return 0;
}
输出:a=5,b=6
我想要的是a=6,b=5. 别纠结了 ,确实要用指针{:301_997:} 第八行应该是b=temp吧 b赋了两次值了 第一:函数返回值只能是1个,不能返回2个,除非用指针
第二:huhan和main两个函数的变量a,b是个自的,不是同一个,你在main里面输出肯定都是main里面的a,b,仔细去看看auto变量的有效范围 int huhan(int &a,int &b)引用传递也行 zjpggbond 发表于 2022-1-15 20:39
第八行应该是b=temp吧
确实。哈哈,眼真尖。 这两种形参
传地址(&a,字符串,&a等作指针)
在函数中使用传地址是可以记录(传递)值(此处的值就是进行所在函数运算后的值)
传变量(a,b等)
特征就是无法记录(传递值),无论函数中发生什么运算了,他返回仍然是原值
ps 你的具体问题中我再提醒一点交换值,你用指针时候,交换记得这样交换
(下面为函数部分,main部分我就不写了)
int temp;
temp=*p;
*p=*q;
*q=temp;
不能这样交换(函数中设一个指针)三个指针进行交换
下面是错的
int *temp;
temp=p;
p=q;
q=temp;
本帖最后由 一剑飘零 于 2022-1-15 21:34 编辑
zxl1227 发表于 2022-1-15 21:07
这两种形参
传地址(&a,字符串,&a等作指针)
在函数中使用传地址是可以记录(传递)值(此处的值 ...
谢谢。感谢指点。 一剑飘零 发表于 2022-1-15 21:15
谢谢。就是想知道有没有不用指针的方法可以调用传递函数的值。
不是好几个人回你吗? 用引用的方法{:1_909:}