- 结构体类型 参数传递的是结构中所有成员的副本。
- 而 结构体指针类型 参数传递的是指向原结构体的指针。
- 代码
/* test3.c */
#include <stdio.h>
struct data {
int i;
char *msg;
};
void changeData1(struct data d); // 结构体类型参数
void changeData2(struct data *d); // 结构体指针类型参数
void main(){
struct data d;
d.i = 0;
d.msg = "0000000";
printf("init0, i:%d, msg:%s\n", d.i, d.msg);
//
changeData1(d);
printf("change1, i:%d, msg:%s\n", d.i, d.msg);
//
changeData2(&d);
printf("change2, i:%d, msg:%s\n", d.i, d.msg);
}
void changeData1(struct data d){
d.i = 1;
d.msg = "111111111";
}
void changeData2(struct data *d){
d -> i = 2;
d -> msg = "22222222222";
}
运行结果:
ubuntu@cuname:~/dev/beginning-linux-programming/test$ gcc -o test3 test3.c
ubuntu@cuname:~/dev/beginning-linux-programming/test$ ./test3
init0, i:0, msg:0000000 // 初始值
change1, i:0, msg:0000000 // 结构体类型参数 更改失败
change2, i:2, msg:22222222222 // 结构体指针类型 修改成功