当前位置:首页 > 教育资讯

C语言-结构体传值和传址

①理论

结构体传值,

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

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

结构体传址,

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

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

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

本文来自网络,不代表教育资讯立场,转载请注明出处。