閱讀屋>考試> 軟體水平考試考前練習題

軟體水平考試考前練習題

軟體水平考試考前練習題

  1.若有下面的程式片段,則對陣列元素的錯誤弓D用是( )

  int a[12]={0},*p[3],* *pp,i;

  for( i=0;i<3;i++) p=&a[i+4];

  pp= P;

  ①pp[0][1]  ②a[10]

  ③ p[3][l]  ④*(*(p+2)+2)

  2.若有如下定義和語句,則輸出結果是( )

  int * *pp, *p,a=10,b=20;

  PP= &p; P=&a; P=&b; printf("%d%d ",*p,* *PP);

  ①10, 20  ② 10, 10  ③ 20, 10  ④ 20, 20

  【解】上述程式碼定義變數a是有12個整型元素的陣列,它的初值全是0。p是有三個元素的指標陣列,每個指標能指向整型變數。哪是指標的'指標,它能指向一個指向整型變數的指標, i是一個整型變數。執行程式碼for(i=0;i<3;i++) P=&a[i+4] 使指標陣列 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] 當然是引用陣列a的元素。③程式碼p[3][1]陣列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。所以解答是④。

【軟體水平考試考前練習題】相關文章: