函数不能传多个参数。但是我学了结构体之后,有个想法就是,在参数里写上结构体。这样不就能传多个值了吗!
#include<stdlib.h> #include<stdio.h> #include<conio.h> #include<string.h> struct s { int a; char b; }c;
void bian(struct s h)
{
h.a=1;
h.b='k';
}
int main()
{
bian(c);
printf("得出的值分别为:%d %d",c.a,c.b);
getch();
return 0;
}
但是呢?结构体里两个结果都得0。无限懵逼,求解答
C语言的参数传递是值传递,bian()
函数接收的实际是结构体c的副本,bian()
修改只是副本,不是原来的结构体了。如果把函数调用展开,大体上等价于于下面的代码
#include<stdio.h>
int main(){
// bian(c);
// 函数调用
struct s h;
h = c;
h.a=1;
h.b='k';
// 调用结束
printf("得出的值分别为:%d %d",c.a,c.b);
getchar();
return 0;
}
函数bian()
修改的和传给它的根本不是同一个变量,只是一个克隆体。