1.下面各語(yǔ)句中,能正確進(jìn)行賦字符串操作的語(yǔ)句是( )
、賑har s[5] ={"ABCDE"};
、赾har s[5] ={’A’,’B’,’C’,’D’,’E’};
③ char *s;s="ABCDE";
、 char *s;scanf("%", s);
6.若有以下定義,則不能表示a數(shù)組元素的表達(dá)式是()
int a[10]={1,2,3,4,5,6,7,8,9,1o},*p=a;
、*p 、 a[10] 、*a ④ a[p-a]
【解】字符串最終存儲(chǔ)于字符數(shù)組中,存儲(chǔ)字符串的字符數(shù)組可以是程序主動(dòng)引入的(定義或動(dòng)態(tài)分配),也可以是字符串常量,由系統(tǒng)分配。其中字符數(shù)組用字符串初始化就是字符串存儲(chǔ)于由程序引入的字符數(shù)組的例子。給字符指針賦字符串則是系統(tǒng)自動(dòng)分配字符率存儲(chǔ)空間的例子。給字符指針賦字符串并不是將一個(gè)長(zhǎng)長(zhǎng)的字符串存于字符指針變量中,而是將字符串常量存儲(chǔ)于常量區(qū),并將存儲(chǔ)這個(gè)字符串的首字節(jié)地址賦給指針變量,讓指針變量指向字符率常量的首字符。對(duì)于以字符串作為字符數(shù)組初值的情況,要求字符數(shù)組足夠的大,能存得下字符串常量。這里有一個(gè)特別的規(guī)定,若數(shù)組的大小少于存儲(chǔ)字符串有效字符的字節(jié)個(gè)數(shù),系統(tǒng)將報(bào)告錯(cuò)誤;當(dāng)字符數(shù)組的大小只能存儲(chǔ)字符串的有效字符,而不能存儲(chǔ)字符率結(jié)束標(biāo)記符時(shí),則存儲(chǔ)于字符數(shù)組中的內(nèi)容是字符序列,因沒(méi)有存儲(chǔ)字符率結(jié)束標(biāo)記符,存儲(chǔ)的內(nèi)容就不是字符串。如代碼char a[5]="ABCDE"。另外,給字符數(shù)組元素逐一賦字符初值,并在字符初值中沒(méi)有字符串結(jié)束標(biāo)記符,則存于字符數(shù)組中的內(nèi)容也不是字符率。如代碼 char s[5]={’A’,’B’,’C’,’D’,’E’}。特別要注意當(dāng)字符指針還未指向某個(gè)字符數(shù)組的元素時(shí),不可以通過(guò)字符指針輸入字符串。如代碼 char *s;scanf("%s",s)。若寫成char *str;scanf("%s",&str)更是錯(cuò)誤的了。由于C語(yǔ)言規(guī)定數(shù)組不能相互賦值,所以只能將字符串常量賦給某字符指針。如代碼 char *s;s="ABCDE"是正確的。實(shí)際上,字符率"ABCDE" 被存儲(chǔ)于常量區(qū)中,向指針變量賦的是字符指針,讓s指向其中的字符’A’。所以解答是③。
【解】上述代碼定義了有10個(gè)元素的整型數(shù)組。,和定義指針變量p,并讓p指向數(shù)組元素a[0]。所以代碼*p是引用 a[0]。由于數(shù)組a只有10個(gè)元素,最后一個(gè)元素是a[9],表達(dá)式a[10]是錯(cuò)誤的。數(shù)組名a可以作為a的首元素的指針,表達(dá)式*a就是a[0] ,是對(duì)數(shù)組a的首元素a[0]的引用。指針p的值是a,表達(dá)式p-a。的值是0,所以a[p-a]就是a[0]。所以解答是②。
相關(guān)推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |