注意
这里包括形参和实参
struct dangdangtest { char name[30]; int num; }; void change(int num)//值传递 新建一个变量接受传递的值 { num = 1000; } //使用结构体作为参数 浪费内存 需要建立结构体 void change2(struct dangdangtest ddt) { ddt.num = 1000; printf("\nmain=%p,%p",ddt,&ddt.num);//函数内部结构体地址 } //函数内部改变需要地址 所以需要指针保存 void changeall(struct dangdangtest *p) { (*p).num = 1000;//*根据地址取出内容 } void main5() { struct dangdangtest ddt; ddt.num = 99; sprintf(ddt.name,"adf");//初始化 printf("\nmain=%p,%p",ddt,&ddt.num);//main函数内部结构体地址 /*change(ddt.num); printf("%d",ddt.num);99*/ /*change2(ddt); printf("%d",ddt.num);*/ changeall(&ddt); printf("\n%d",ddt.num); getchar(); } //参数对于数组来说传递的是地址 4个字节 void datatest(struct dangdangtest ddd[10]) { printf("datatest=%d",sizeof(ddd)); } void dtc(struct dangdangtest ddd[10]) { ddd[4].num = 88; sprintf(ddd[4].name,"654656");//前面有提过 printf("datatest=%d",sizeof(ddd)); } void main() { struct dangdangtest ddd[10];//10个元素 36*10 struct dangdangtest *p = ddd; printf("\n%d",sizeof(ddd));// ddd[0].num = 90; sprintf(ddd[0].name,"dfasdf"); /*datatest(ddd); printf("main=%d",sizeof(ddd));*/ getchar(); }