理论
结构体传值,
形参(值)不改变实参(值),
将结构体变量的值作为实参传递。
结构体传址,
形参(指针)改变实参(地址)所指成员的结构体值,
将结构体变量的地址作为实参传递。
struct A t
A是结构体标识名,t是变量名,
t中包含若干成员。
~
传值
#include
#include
/*结构体说明*/
struct A
;
/*函数说明*/
void f(struct A t);
/*主函数*/
void main()
;
f(a);
printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}
/*定义函数*/
void f(struct A t)
结果
是a,1111,"Zenglaoshi",1111.0
不是t,2222,"Zhangyida",2222.0
只是生成参数a的一个副本,
不会改变a的值。
~
传址
#include
#include
/*结构体说明*/
struct A
;
/*函数说明*/
void f(struct A *p);
/*主函数*/
void main()
;
f(&a);
printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}
/*定义函数*/
void f(struct A *p)
结果
是*p,2222,"Zhangyida",2222.0
不是a,1111,"Zenglaoshi",1111.0
改变a的值。
关键词: C语言-结构体传值和传址 struct void