c语言怎么给结构体输入值(C语言-结构体传值和传址)
c语言怎么给结构体输入值(C语言-结构体传值和传址)A是结构体标识名,t是变量名,struct A t结构体传址,形参(指针)改变实参(地址)所指成员的结构体值,将结构体变量的地址作为实参传递。
①理论
结构体传值,
形参(值)不改变实参(值),
将结构体变量的值作为实参传递。
结构体传址,
形参(指针)改变实参(地址)所指成员的结构体值,
将结构体变量的地址作为实参传递。
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的值。