C语言中,用结构体作函数参数的问题?

C语言中,用结构体作函数参数的问题?,第1张

可以的,这样写:

test((RGBColor){0x0,

0x1,

0x2});

这个意思是把{0x0,

0x1,

0x2}强制转化为RGBColor类型。从语法语义上面是没问题的,在GCC编译没问题。

但是51上面没实验,按C标准能说得通,你可以试一试。

参数的传入分为两种形式:值传递和地址传递。如果把实例本身作为参数传到函数里面去,那么在函数里面实际上是另外产生一个临时的实例,其值和函数外部的那个实例一样,当然在函数内部对其做的一些改动是不会影响到外边的实例的,因为就不是同一个东西。当然如果在函数里不是想去改变什么而只是单纯的计算一些东西还是没问题的,不过在内存中的地址之类的当然是不一样的。。。传指针也就是把地址传进去,那么在函数里对该地址中的数据进行 *** 作,当然就是在外部实例本身上面进行修改了

struct ceshi

 {

  int data;

 };

 void chage(struct ceshi p);

 

void main()

{

 

 struct ceshi shuju;

  shuju=(struct ceshi )malloc(sizeof(struct ceshi));//要给结构体数据开辟一个存储空间

  shuju->data = 12;

 chage(shuju); 

 printf("%d\n", shuju->data);

 system("pause");

}

void chage(struct ceshi p)

{

    p->data = 1000;//这里是指针变量传递进来,不是它自己的地址传递进来

}

//这样就OK了

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12153557.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存