函數(shù)一(傳址調(diào)用)#include<stdio.h>struct STU{char name[9];char sex;int score[2];};void f(struct STU a[]){struct STU b={"Zhao",'m',85,90};a[1]=b;}main(){struct STU c[2]={{"Qian",'f',95,92},{"Sun",'m',98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}輸出結(jié)果是Qian,f,95,92,Zhao,m,85,90(f函數(shù)有作用)函數(shù)二(傳值調(diào)用)#include<stdio.h>#include<string.h>struct A{int a;char b[10];double c;};void f(strcut A t);main(){struct A a={1001,"ZhangDa",1908.0};f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}void f(struct A t){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}輸出結(jié)果是1001,ZhangDa,1098.0(f函數(shù)無作用)初學(xué)者表示已經(jīng)要崩潰了,求大神解答簡單點!不然我聽不懂!
2 回答

慕后森
TA貢獻1802條經(jīng)驗 獲得超5個贊
f(strcut A t) 參數(shù)是一個結(jié)構(gòu)體,而結(jié)構(gòu)體說到底就是用戶自定義的組合的變量類型。是一個變量。所以這里是按照傳數(shù)值的方式進行參數(shù)傳遞。
f(struct STU a[])參數(shù)是一個結(jié)構(gòu)體數(shù)組,數(shù)組都是按照傳地址的方式進行參數(shù)傳遞的。
若還不能理解,就把Struct A t看成是int t 而 struct STU a[]相當(dāng)于 int a[].這樣應(yīng)該就好懂了
關(guān)于傳遞參數(shù)類型,首先要看函數(shù)的定義。不要去看函數(shù)的調(diào)用。

撒科打諢
TA貢獻1934條經(jīng)驗 獲得超2個贊
第二個程序傳入的t是主函數(shù)中a的一個副本(也就是所謂的值傳遞,傳入到子函數(shù)中的是a的值),所以,t的變化與a無關(guān)
而
第一個程序中傳入的a是個數(shù)組名,也就是是個地址,a【1】=b就是將b中的數(shù)據(jù)存入了a地址中,所以,能通過a帶回到主程序中。
- 2 回答
- 0 關(guān)注
- 611 瀏覽
添加回答
舉報
0/150
提交
取消