這樣寫是不可以的。
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站定制方案、改版、費(fèi)用等問題,行業(yè)涉及資質(zhì)代辦等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
應(yīng)該這么聲明:
void days(struct student * judget)
{
//省略
}
struct student s;
s.year = year;
s.month = month;
s.day = day;
days(s);//這么使用
但是我不明白為什么結(jié)構(gòu)體的名稱是student啊,這個(gè)和學(xué)生沒有關(guān)系,應(yīng)該起個(gè)相關(guān)的名稱,如time之類的,呵呵
fun函數(shù)的第二個(gè)參數(shù)之所以用指針,就是為了能把函數(shù)里面對(duì)這個(gè)參數(shù)做的改動(dòng)保存下來
而你如果把*s=a[p];改成s=a[p];效果相當(dāng)于,改了s的值,使其不再指向參數(shù)(函數(shù)
外部變量
m)的地址,雖然*s的值是正確的,但實(shí)際m的值則沒有改變,所以在外面輸出的時(shí)候,結(jié)果和預(yù)期不一致了
s=a[p];這個(gè)操作本身沒有問題
1.可以把結(jié)構(gòu)體作為參數(shù)啊,
2.不去取地址的意思,是引用的意思,函數(shù)執(zhí)行時(shí)修改L的值,就直接的修改了實(shí)參的值,相當(dāng)于地址傳遞了。
3.真正調(diào)用的時(shí),如下:
SqList
tempStruct;
InitList_Sq(tempStruct)
這樣就可以了。
呵呵
C語(yǔ)言中,所有的變量都存儲(chǔ)在內(nèi)存中,可以通過運(yùn)算符獲得變量的內(nèi)存地址,函數(shù)調(diào)用時(shí),只需要把普通變量前加上符號(hào),就可以達(dá)到傳遞變量地址的目的。
例如:
定義一個(gè)結(jié)構(gòu)體類型
struct?Yearmonthday
{?
int?year,?month,?day;
};
定義相關(guān)函數(shù),參數(shù)類型指定為結(jié)構(gòu)體類型指針
void?input(struct?Yearmonthday?*p1)?//函數(shù)形參p1是結(jié)構(gòu)體指針類型
{
printf("請(qǐng)輸入年,月,日:");
scanf("%d,%d,%d",p1-year,p1-month,p1-day);
}
在主函數(shù)中定義一個(gè)結(jié)構(gòu)體變量,調(diào)用相關(guān)函數(shù),傳遞變量地址
int?main()
{?
struct?Yearmonthday?ymd;
input(ymd);?//傳遞變量地址,以便帶回?cái)?shù)據(jù)
printf("date=%d/%d/%d\n",?ymd.year,?ymd.month,?ymd.day?);?//輸出結(jié)果
return?0;
}