1.若有下面的程序片段,則對數(shù)組元素的錯誤弓D用是( )
int a[12]={0},*p[3],* *pp,i;
for( i=0;i <3;i++) p=&a[i+4];
pp= P;
、賞p[0][1] 、赼[10]
、 p[3][l] 、*(*(p+2)+2)
2.若有如下定義和語句,則輸出結(jié)果是( )
int * *pp, *p,a=10,b=20;
PP= &p; P=&a; P=&b; printf("%d%d\n",*p,* *PP);
①10, 20 、 10, 10 、 20, 10 、 20, 20
【解】上述代碼定義變量a是有12個整型元素的數(shù)組,它的初值全是0。p是有三個元素的指針數(shù)組,每個指針能指向整型變量。哪是指針的指針,它能指向一個指向整型變量的指針, i是一個整型變量。執(zhí)行代碼for(i=0;i<3;i++) P=&a[i+4] 使指針數(shù)組 p的元素 p[0]指向 a[4] ,p[l]指向a[5] ,p[2]指向 a[6]。代碼pp=p使指針變量pp指向p[0]。①代碼pp[0][l] 用指針表達可等價地寫成*(*pp+l)。其中*pp就是 p[0],p[0]的值是&a[4],*pp+1的值是&a[4]+1=&a[5],*(*pp+1)就是a[5]。②代碼 a[l0] 當然是引用數(shù)組a的元素。③代碼p[3][1]數(shù)組p只有三個元素,沒有p[3],所以是錯誤的。④代碼*(*(p+2)+2)中的(p+2)是 &p[2],*(p+2)是 p[2],其值是&a[6],*(p+2)+2的值是&a[8],*(*(p+2)+2)引用的是a[8]。所以解答是@。
【解】上述代碼定義變量pp是指針的指針,它能指向一個指向整型變量的指針。定義變量p是指針,它能指向一個整型變量。a是一個整型變量,它有初值10。b也是一個整型變量,它有初值20。代碼 pp=&p 使pp指向p,p=&a使p指向a,p=&b又使p指向b,不再指向a。所以。p是引用b,其值為20。* *pp是通過pp間接引用p,再通過p間接引用b,所以也是20。所以解答是④。
相關(guān)推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |