①理论
结构体传值,
形参(值)不改变实参(值),
将结构体变量的值作为实参传递。
结构体传址,
形参(指针)改变实参(地址)所指成员的结构体值,
将结构体变量的地址作为实参传递。
struct A t
A是结构体标识名,t是变量名,
t中包含若干成员。
~
②传值
#include< stdio.h>
#include< string.h>
/*结构体说明*/
struct A
{int a;
char b[20];
double c;};
/*函数说明*/
void f(struct A t);
/*主函数*/
void main
{struct A a={1111,"Zenglaoshi",1111.0};
f(a);
printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}
/*定义函数*/
void f(struct A t)
{t.a=2222;
strcpy(t.b,"Zhangyida");
t.c=2222.0;}
结果
是a,1111,"Zenglaoshi",1111.0
不是t,2222,"Zhangyida",2222.0
只是生成参数a的一个副本,
不会改变a的值。
~
③传址
#include< stdio.h>
#include< string.h>
/*结构体说明*/
struct A
{int a;
char b[20];
double c;};
/*函数说明*/
void f(struct A *p);
/*主函数*/
void main
{struct A a={1111,"Zenglaoshi",1111.0};
f(&a);
printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}
/*定义函数*/
void f(struct A *p)
{p->a=2222;
strcpy(p->b,"Zhangyida");
p->c=2222.0;}
结果
是*p,2222,"Zhangyida",2222.0
不是a,1111,"Zenglaoshi",1111.0
改变a的值。