注意
這里包括形參和實參
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(); }