有以下程序: #include struct STU (char name[10]; int num; };
有以下程序: #include <string.h> struct STU (char name[10]; int num; }; void f(char *name, int num) {struct STU s[2]={{"SunDan",20044}.{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() {struct STU s[2]={{"YangSall",20041},{"LiSiGao",20042}},*p;p=&s[1]; f(p->name,p->num); printf("%s%d\n",p->name,p->num); } 程序運(yùn)行后的輸出結(jié)果是 ______。
A.SunDan 20042
B.SunDan 20044
C.LiSiGuo 20042
D.YangSan 20041
正確答案:A解析:本題主函數(shù)中定義了結(jié)構(gòu)體類型的指針變量p,并使其指向了結(jié)構(gòu)體類型的數(shù)組s[1],并通過(guò)調(diào)用函數(shù)f改變了指針變量p所指向的結(jié)構(gòu)體中成員變量name的值,但并未改變其num的值。這是因?yàn)楹瘮?shù)f中的形參name是一個(gè)字符型指針變量,它指向了主函數(shù)中指針變量p所指向的結(jié)構(gòu)體的成員變量name,所以對(duì)函數(shù)f中的形參*name的改變也就是劉主函數(shù)中p->name的改變,而函數(shù)f中對(duì)形參num的改變并不會(huì)影響主函數(shù)中p->num的值,因?yàn)榇藭r(shí)傳遞給num的是一個(gè)值,而不是地址。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。