6.根據(jù)下面的定義,能打印出字母M的語(yǔ)句是( )
struct person {char name[9]; int age; };
struct person c[1O] = {{“John”,17 },{“Paul”,19 },{“Mary”,18 },{“Adam”,16 }};
① printf(“%c”, c[3].name); ② printf(“%c”, c[3].name[1] );
③printf(“%c”,c[2].name[1]); ④printf(“%c”,c[2].name[0] );
「解」結(jié)構(gòu)類(lèi)型struct person有兩個(gè)成分:九個(gè)元素的字符數(shù)組name和一個(gè)基本整型age元素類(lèi)型為 struct person的數(shù)組c有10個(gè)元素,其中前四個(gè)元素被設(shè)定了初值。在已設(shè)定初值的元素中,只有c[2].mame[0]的值是字符M.其余元素及元素的成分都不是字符比正確解答是④。
7.設(shè)有如下定義,則對(duì)data中的a成員的正確引用是( )
struct sk{int a;float b;} data,*p= data;
①(*p)。data.a ②(*p)。a ③ p - data.a ④ p.data.a
「解」結(jié)構(gòu)變量data有兩個(gè)成分a和b.結(jié)構(gòu)指針變量p指向結(jié)構(gòu)變量data.引用結(jié)構(gòu)變量data的成分a有兩種方法:一是直接由變量data引用其自己的成分a,寫(xiě)成data.a;二是通過(guò)指針變量p引用它所指的結(jié)構(gòu)的成分a,這又有兩種寫(xiě)法,分別是p - a和(*p)。a.正確解答是②。
7.2 填充題
1.運(yùn)算符“?!狈Q(chēng)為_(kāi)_________運(yùn)算符,運(yùn)算符“ - ”稱(chēng)為_(kāi)_________運(yùn)算符。
「解」引用結(jié)構(gòu)變量或共用型變量的成分用成員運(yùn)算符‘?!?,若某指針指向一個(gè)結(jié)構(gòu)變量或共用型變量,通過(guò)指針引用它所指變量的成分用指向成員運(yùn)算符‘ - ’。
2.設(shè)有定義“struct {int a; float b; char c;} abc,*p_abc= abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc_________a和p_abc___________a.
「解」若有結(jié)構(gòu)變量abc有成分a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成分a的標(biāo)記形式有abc.a和p_abc - a.
3.若有以下說(shuō)明和定義語(yǔ)句,則變量W在內(nèi)存中所占的字節(jié)數(shù)是__________.
union aa {float x;float y; char c[6]; };
struct st { union aa v; float w[5]; double ave; } w;
「解」共用型aa有三個(gè)成分,一個(gè)是float型成分x,一個(gè)是float型成分y,再一個(gè)是有六個(gè)元素的字符數(shù)組。若float型數(shù)據(jù)占4個(gè)字節(jié),則類(lèi)型aa數(shù)據(jù)要占用6個(gè)字節(jié)。結(jié)構(gòu)變量w有三個(gè)成分,一個(gè)是共用型成分aa,要占用6個(gè)字節(jié);一個(gè)是有5個(gè)float型元素的數(shù)組w,要占用20個(gè)字節(jié);再一個(gè)是double型的ave.若doube型數(shù)據(jù)要8個(gè)字節(jié),則結(jié)構(gòu)變量w要占用34個(gè)字節(jié)。
7.3 程序分析題
1.閱讀下列程序,寫(xiě)出運(yùn)行結(jié)果。(字符0的ASCII碼為十六進(jìn)制的30)
main()
{ union { char c; char i[4]; } z;
z.i[0]= 0x39;z.i[1]= 0x36;
printf(“%c \n”, z.c);
}
「解」共用型變量z有兩個(gè)成分,一個(gè)是字符型的c,另一個(gè)是有4個(gè)字符的數(shù)組i.由于共用型的成分是覆蓋存儲(chǔ),成分c的內(nèi)容也是成分i的首元素。程序給Z的i成分的首元素置十六進(jìn)制代碼0x39,即十進(jìn)制數(shù)57.數(shù)57是字符‘9’的ASCII代碼。用字符輸出格式,輸出該變量的值,將輸出字符‘9’ .