106.若有以下定義,則數(shù)值為4的表達(dá)式是(125)
intw[3][4]={{0,1},{2,4},{5,8}},(*p)[4]=W;
(125)A. *w[1]+l
B. p++,*(p+1)
C. w[2][2]
D. p[1][1]
參考答案:(125)D。
解析:二維數(shù)組定義有多種賦初值的辦法,問題給出的代碼是按行給數(shù)組的部分元素賦初值。它們分別是w[0][0]=0.w[0][1]=1、w[1][1]=2.w[1][1]=4,w[2][0]=5,w[2][1]=8。根據(jù)約定,未指定初值的元素自動(dòng)置全0值。指針變量p是一個(gè)指向具有四個(gè)int型元素的一維數(shù)組的指針,定義時(shí)的初值使它指向數(shù)組W的第一行。A的代碼,*w[1]+1中的W[l]是指向w[l][0]的指針,*w[1]就是w[1][0],其值是2,*w[1]+l的值是3。B的代碼是逗號(hào)表達(dá)式,“p++,*(p+1)”先使p指向數(shù)組w的第二行,*(p+l)中的p+l是指向數(shù)組w的第三行,*(p+1)是指針值,指向數(shù)組w的第三行的第一個(gè)元素,即&w[2][0].C的代碼w[2][2]引用數(shù)組W第三行的第三列元素,其值是0。D的代碼p[1][l]引用數(shù)組W第二行的第二列元素w[1][1],其值是4。所以解答是D。
107. 若有下面的程序片段,則對(duì)數(shù)組元素的錯(cuò)誤的引用是(126)
inta[12]={0},*p[3],**pp,i;
for(i=0;i<3;i++)p[i]=&a[i+4];
pp=P;
126)A. pp[0][1]
B. a[10]
C. p[3][l]
D. *(*(p+2)+2)
參考答案:(126)C。
解析:上述代碼定義變量a是有12個(gè)整型元素的數(shù)組,它的初值全是0。p是有三個(gè)元素的指針數(shù)組,每個(gè)指針能指向整型變量。哪是指針的指針,它能指向一個(gè)指向整型變量的指針,i是一個(gè)整型變量。執(zhí)行代碼for(i=0;i<3;i++)P[i]=&a[i+4]使指針數(shù)組p的元素p[0]指向a[4],p[l]指向a[5],p[2]指向a[6]。代碼pp=p使指針變量pp指向p[0]。A代碼pp[0][l]用指針表達(dá)可等價(jià)地寫成*(*pp+l)。其中*pp就是p[0],p[0]的值是&a[4],*pp+1的值是&a[4]+1=&a[5],*(*pp+1)就是a[5]。B代碼a[l0]當(dāng)然是引用數(shù)組a的元素。C代碼p[3][1]數(shù)組p只有三個(gè)元素,沒有p[3],所以是錯(cuò)誤的。D代碼*(*(p+2)+2)中的(p+2)是&p[2],*(p+2)是p[2],其值是&a[6],*(p+2)+2的值是&a[8],*(*(p+2)+2)引用的是a[8]。所以解答是C。
108.若有如下定義和語句,則輸出結(jié)果是(127)
int**pp,*p,a=10,b=20;
PP=&p;P=&a;P=&b;printf("%d%d ",*p,**PP);
(127)A.10,20
B. 10,10
C. 20,10
D. 20,20
參考答案:(127)D。
解析:上述代碼定義變量pp是指針的指針,它能指向一個(gè)指向整型變量的指針。定義變量p是指針,它能指向一個(gè)整型變量。a是一個(gè)整型變量,它有初值10。b也是一個(gè)整型變量,它有初值20。代碼pp=&p使pp指向p,p=&a使p指向a,p=&b又使p指向b,不再指向a。所以。p是引用b,其值為20。**pp是通過pp間接引用p,再通過p間接引用b,所以也是20。所以解答是D。
109.若有以下定義和語句,則對(duì)w數(shù)組元素的非法引用是(128)
intw[2][3],(*pw)[3];pw=w;
(128)A. *(w[0]+2)
B. *pw[2]
C. pw[0][0]
D. *(pw[l]+2)
參考答案:(128)B。
解析:上述代碼定義2行3列的二維數(shù)組w,定義能指向有3個(gè)整型元素一維數(shù)組的指針pw,并讓pw指向數(shù)組w的第一行。A代碼*(w[0]+2)中的w[0]是&w[0][0],w[0]+2是&w[0][2],所以*(w[0]+2)就是w[0][2]。B代碼*pw[2]中的pw[2]是&w[2][0],該數(shù)組w只有2行,沒有w[2][0],所以代碼*pw[2]是對(duì)數(shù)組W元素的非法引用。C代碼pw[0][0]就是w[0][0]。D代碼*(pw[l]+2)中的pw[1]就是*(pw+l),即&w[l][0],pw[l]+2就是&w[l][2],所以*(pw[1]+2)就是w[1][2]。所以解答是B。
相關(guān)推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |