編程小白C語言題目練習5

題目要求

若有以下定義和語句:
int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

則不能表示a數組元素的表達式是(        )
(A)*p            (B)a[10]        (C)*a            (D)a[p-a]

思路分析 

基礎比較好的話,一眼就能看出,B選項不對,因爲a數組只要10個元素,最後一個元素對應是a[9]=10,a[10]不屬於a,如果是a[10],這裏就內存越界,然後看看別的選項,*p就是*a也就是a[0],A,C,選項沒問題

值得一提的是,D選項中,a[p-a],p指向的是數組a,因爲p中與a數據相同,都是數組a[10]的首地址,所以p-a就等於0,因此a[p-a]就相當於a[0]

代碼演示 

#include <stdio.h>
#include <string.h>
int main()
{
	int a[10]={1,2,0,4,5,6,7,8,9,10};
	int *p=a;
	printf("*p=%d\n",*p); 
	printf("a[10]=%d\n",a[10]);
	printf("*a=%d\n",*a);
	printf("a[p-a]=%d\n",a[p-a]);
	return 0;
}

驗證結果

可以看出來,ACD輸出的結果都爲1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章