快捷搜索:  汽车  科技

c语言怎么给结构体输入值(C语言-结构体传值和传址)

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

c语言怎么给结构体输入值(C语言-结构体传值和传址)(1)

①理论

结构体传值,

形参(值)不改变实参(值)

将结构体变量的值作为实参传递。

结构体传址,

形参(指针)改变实参(地址)所指成员的结构体值

将结构体变量的地址作为实参传递。

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的值。

猜您喜欢: