1樓:匿名使用者
這道題很難,需要仔細考慮。
a陣列資料如下:
a[0][0]:1
a[0][1]:2
a[0][2]:3
a[1][0]:4
a[1][1]:5
a[1][2]:6
p是指向有三個元素陣列的指標,也可以認為是乙個指向指標的指標。
a.*p為三元素陣列的首位址,+3後會指向陣列中的第4個元素,發生了越界,還好,a是二維陣列,越界後不會出錯,而是指向了二維陣列中的第二個三元陣列的第乙個元素,取值得4。
b.與a相比少了乙個間接運算子*,所以它表示的是乙個位址,非值。
c.p+0後沒有任何變化,與a相同。
d.a[0][3]其實越界了,好在後面還有a[1][0]等資料,於是將a[1][0]中的陣列4作為其值。
答案是b
編寫程式驗證了答案,顯示如下:
*(*p+3)=4
*p+3=1638204
*(*(p+0)+3)=4
a[0][3]=4
2樓:
選ba陣列資料如下:
a[0][0]:1
a[0][1]:2
a[0][2]:3
a[1][0]:4
a[1][1]:5
a[1][2]:6
p是乙個指向3個元素陣列的指標,就是說p+1相當於&a[1],這裡的p+1會移動乙個一維陣列的大小,就是說3個int的大小
*p相當於a[0]
所以a和c一樣,*p+3相當於&a[0][3],指向4,再解引用就變成了4
從上面的分析就看出了d是對的,而b是指向這個4的指標
3樓:o寒風夜襲
(*p)[3]=a=a[0][0]=1;
*(*p+3)=a[1][0]=4;
*p+3=&a[1][0],其值指向a[1][0]的位址,*(*(p+0)+3)=*(*p+3)=4;
a[0][3]=3;選d.
4樓:匿名使用者
答案是b
猜測法:p+0還是p,所以a、c相等,而b明顯與a不同,故答案是b。
知int a[]={1,2,3,4,5,6},*p=a+2;則p[2]的值是( c )。
5樓:匿名使用者
a+0指向1,a+1指向2,a+2指向3,*p=a+2;那麼p指向3,p[2]就是p+2指向的資料
p+0指向3,p+1指向4,p+2指向5,所以p[2]的值是5
{ int a[]={1,2,3,4,5,6};int *p;p=a;printf("%d ",*p);printf("%d ",*(++p));
6樓:玄殤隕
main()
;int *p;
p=a; //p指向的陣列
printf("%d ",*p); //*p指的是陣列a的首位址的資料就是zhi陣列的第一dao個元回素,是1
printf("%d ",*(++p));//*(++p)是先自答
加再用,p指向第乙個元素,自加1後就是指向第二個元素,是2
printf("%d ",*++p); //因為p已經指向的第二個元素,再自加1就是第三個元素,是3
printf("%d ",*(p--));//p--是先用再自減,所以輸出是3,然後p自身再做自減1,
p+=3; //上一步p自減一后指向第二個元素,再後移3個元素就是5
printf("%d %d ",*p,*(a+3));/*(a+3)就是a[3]就是第4個元素就是4}
7樓:樂vov樂
main()
;int *p;
p=a;
printf("%d ",*p); //陣列a第乙個copy元素是什麼,是:1
printf("%d ",*(++p));//第2個元
素是什麼,是:2
printf("%d ",*++p); //第2個元素自增1是什麼,是:3
printf("%d ",*(p--));//還是問第2個元素是幾,但是上乙個表示式後,第2個元素就成了:3
p+=3; //向後移動3個位置
printf("%d %d ",*p,*(a+3));//輸出第5個元素是幾:5 輸出相對首位址偏移3個位置的元素:4 即a[3]}
已知:int a[]={1,2,3,4,5,6},*p=a;下面表示式中p值為5的是___ ___。
8樓:聽不清啊
表示式中 *p 值為5的是___ (a)p+=3;*(p++); ___。
9樓:匿名使用者
(a)p+=3;*(p++);
設有變數定義 int a[3][2]={1,2,3,4,5,6}, (*p)[2]=a;表示式**(p+2)=*p[2]的值?
10樓:潘良段幹宛菡
(*p)[2]=a表示來
將p定義為乙個指向自
含2個元素的一維陣列的指標變數,那麼二維陣列就可以看作是一維陣列a[3],其中每乙個元素都是乙個一維陣列,a[1]=,a[2]=,a[3]=;
則p+2就指向了a[3],*(p+2)是a[3]的首位址,**(p+2)就是a[3]的首元素,即為5。
11樓:匿名使用者
**(p+2),*p[2]這兩個表示式是等價的,當然,**(p+2)=*p[2]是乙個賦值表示式,最終的值還是a[2][0],即5
12樓:匿名使用者
作用是:a[2][0]被 a[0][2]也就是a[1][0]賦值
13樓:匿名使用者
**(p+2)的值為5
已知inta51,2,3,4,5pa2則P的值是
因為 p a 2,也就是說把集合a中的元素全部加上2就是 p中的元素 所以 p 指標p指向陣列a 2 的位置,所以 p的值為3 p 知int a 1,2,3,4,5,6 p a 2 則p 2 的值是 c a 0指向1,a 1指向2,a 2指向3,p a 2 那麼p指向3,p 2 就是p 2指向的資料...
設有變數定義inta21,2,3,4,5,6pa表示式p2p
p 2 a表示來 將p定義為乙個指向自 含2個元素的一維陣列的指標變數,那麼二維陣列就可以看作是一維陣列a 3 其中每乙個元素都是乙個一維陣列,a 1 a 2 a 3 則p 2就指向了a 3 p 2 是a 3 的首位址,p 2 就是a 3 的首元素,即為5。p 2 p 2 這兩個表示式是等價的,當然...
設有語句inta10pa,則下面的語句中不正確的是
前三個賦值語句都是正確的。選項d是錯誤的,a是陣列,只能對陣列元素賦值,要有下標。選d。d是錯的,陣列名是位址,這個位址不可以修改。設有以下語句,則 不是對a陣列元素的正確引用,其中0 i 10 四個選bai項中,d不是對a陣列元素的正du確引用。int a 10 p a 相當zhi於 int a ...