#include <stdio.h> struct Person { char *name; }; void change1(struct Person p); void change2(struct Person *p); int main() { /*************************************************** *结构体和函数 * 1、当结构作为函数的参数时,只是将实参结构体所有成员的值对应地赋值给了 * 形参结构体的所有成员 * 2、当结构体形参是指针时,会影响外面结构体的值 * *注意结构体类型的定义要在函数前面 ****************************************************/ struct Person p = {"test"}; change1(p); //不会改变结构体变量的值 printf("name = %s\n", p.name); change2(&p); //可以改变结构体变量的值 printf("name = %s\n", p.name); return 0; } void change1(struct Person p) { p.name = "changed"; } void change2(struct Person *p) { p->name = "changed"; }
name = test
name = changed