1樓:潘良段幹宛菡
(*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。
2樓:匿名使用者
**(p+2),*p[2]這兩個表示式是等價的,當然,**(p+2)=*p[2]是乙個賦值表示式,最終的值還是a[2][0],即5
3樓:匿名使用者
作用是:a[2][0]被 a[0][2]也就是a[1][0]賦值
4樓:匿名使用者
**(p+2)的值為5
若有定義:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )對陣列a元素的引用是正確的。
5樓:處搖胼手胝足
a。a陣列的長度是3,*(p[4])和**(p+4)都會造成超出位址範圍
(**p)[2]表達不正確
*(p[2]+3) 是a[2][3];
6樓:匿名使用者
int (*p)[4];表明p是行指bai針,即p指向二維陣列中的一du行。zhi
p=a;這一句表示
daop指向a[0],也就是
版指向a陣列第0行的第0個元素權
(a[0][0])的位址。
p[2]表示p指向a陣列的第二行,即指向a[2]行,也就指向a[2][0]的位址。
p[2]+3表示行指標指向a陣列的第二行(從第0行開始),(從0開始)第3個元素,也就是a[2][3],*(p[2]+3)表示第2行,第3個元素的值。
p+4表示第四行(從0行開始),因為a陣列沒有第四行,所以是錯的。
p[4]表示第四行(從0行開始),原因同上。
*p表示a陣列第0行,第0列位址,**p表示a[0][0]的值,值不會再包含元素,所以(**p)[2]是錯的。
設有變數定義 int a[3][2]={1,2,3,4,5,6}, (*p)[2]=a;表示式**(p+2)的值?
7樓:匿名使用者
(*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。
8樓:匿名使用者
*(p+2)即a[2],**(p+2)即*(*(p+2)+0)即a[2][0],所以它的值是5
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;則下列表示式不是4的是 ( )。
9樓:匿名使用者
這道題很難,需要仔細考慮。
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
10樓:
選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的指標
11樓: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.
12樓:匿名使用者
答案是b
猜測法:p+0還是p,所以a、c相等,而b明顯與a不同,故答案是b。
int a[3][2] = { 1,2,3,4,5,6 }, (*p)[2]; p = a; printf("%d\n",a); printf("%d,%d",*a,*a[0]); } 50
13樓:匿名使用者
二維陣列
可以當成每個
元素都是乙個陣列的一維陣列
比如a[3][2] 可以當作乙個一維陣列a[3], 但是a[3]的每個元素回都是答乙個一維陣列..
那麼就好理解了 *a是a[0],但是a[0]自身是乙個一維陣列,並不是乙個數
所以*a[0], 或者**a 才是這個一維陣列的首個元素的值
14樓:匿名使用者
二維陣列的首位址是
來二級自指標,二級指標就是指bai針的指標,du意思就是乙個指標指向了另一
zhi個指標。
假如:int **b , *a; b = &a; 所以dao*b中存放的是指標a指向的位址值, b就是a的位址值。
所以這裡的**a 和*a就是這個道理。這裡*a就是第一行首位址的位址值
15樓:哥德**的憂鬱
a是乙個二維陣列的首地抄址,*a是對a相當於進行了一次降維,所以*a是一維陣列的首位址,也就是a[0],這麼說吧你可以把a[3][2]看成這樣子, },所以a指向的是這一整個陣列,*a指向才是陣列裡的乙個元素,所以再對*a進行*運算,也就是**a,才會是第一元素的值,如果不懂歡迎追問哦。
16樓:育知同創教育
二維陣列不應該是**a才能取到1嗎?
17樓:王子易
你這什麼,題目看不懂
知int a[]={1,2,3,4,5,6},*p=a+2;則p[2]的值是( c )。
18樓:匿名使用者
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 21,2,3,4p 3 1則 p 1 表示的陣列元素是
arr n 等價於 arr n 因為p 0 a 1 所以 p 0 1 相當於 a 1 1 等價於a 1 1 把a 1 看成是上式的arr即可 若有以下定義和語句則 p 的值是 3 這個答案為什麼不是2 p a 2 p指向了a的下標為2的元素,c語言的陣列下標是從0開始的,下標為2指的是第三個元素,2...
設有變數定義char a aint i 3,j
這和你復變數的定義有關,你的j和制i是int型的,那第bai乙個 x後是3.5後再du乘5是17.5,這是因為j是int型,所zhi以就四捨五入了,j就變為17,然後3 17 14,5.0 14 9.0,改法可以把j和i改為double或float 剩下的基本可以類推吧,就 dao是決定數字的值的不...
設有定義語句「int a 4123則a的值為多少?a的值為多少?能有詳細解題步驟嗎
這是乙個二 來維陣列,a 3 4 列舉出源來就是 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 a 0 代表第一行,a 1 代表第二行.a 1 1 代表第二行第二列的值,a 2 1 代表第三行第二列的值...