設有變數定義inta21,2,3,4,5,6pa表示式p2p

2021-03-03 20:44:23 字數 3670 閱讀 2805

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 代表第三行第二列的值...