設有inta20pa則下面中哪個與a不等價Ap

2021-03-03 20:30:21 字數 1550 閱讀 3805

1樓:自我程式設計

a為陣列名,相當於常量指標,不能進行賦值運算,編譯會錯。

所以選c *++a

2樓:金色潛鳥

c。 按運算子優

抄先級襲, *++a; 右到左結合,即 *(++a)a 是陣列名, ++a 是不合法的表示式。a 的指標增 1, 要寫成 (a+1) ,而不是 ++a.

所以與a[1]不等價。

其它3個都等價。

3樓:匿名使用者

答案選bp = a;讓a指向int a[2][2]的int a[2];p++讓p指向int[2]的第二個地址,int a[1][2]的地址,所以**p的值是3.

c++中對於陣列int a[9],*p=a,a+1,a++,++a,p+1,p++,++p有什麼區別

4樓:

a++和++a是錯誤的,編譯都不會過,因為陣列名是常指標。只剩下a+1和p+1了,它們在使用上是沒有區別,指向了同一個地方,但a是常指標而p是普通指標!

5樓:匿名使用者

都不表示a[1]

a+1表示&a[1]

a++和++a都是非法p+1和a+1相同

p++和++p不一樣,前者值是p後者是p+1

設有語句int a[10],*p=a;,則下面的語句中不正確的是

6樓:匿名使用者

前三個賦值語句都是正確的。選項d是錯誤的,a是陣列,只能對陣列元素賦值,要有下標。選d。

7樓:匿名使用者

d是錯的,陣列名是地址,這個地址不可以修改。

int a[3][4],(*p)[4]=a;則與表示式*(a+1)+2不等價的是 a:p[1][2] b:*(p+1)+2 c:p[1]+2 d:a[1]+2

8樓:匿名使用者

是a吧,a已經不是一個地址了

b,c,d和*(a+1)+2都還是一個地址,要加上*()才能輸出值的

若有定義int a[2][3],*p=a;則以下不能表示陣列元素a[1][2]的是選項:a,*(a[1]+2) b,

9樓:匿名使用者

首先 題目有問題

定義的時候 int *p; 指標p可以指向任何一個整形變數a是二維陣列名

int *p=a; 這個賦值本身就不對

10樓:

選baibcd

c、d選項等價,p是a的地址du,a是陣列名即陣列首元素zhia[0][0]的地址的dao地址,內所以p解引用一次得到的容值還是一個地址,和陣列元素自然不同

b選項,p指標解引用2次依然還是個地址,故不和a[1][2]相同a選項,*(a[1]+2)根據陣列與指標的等價關係(arr[i]==*(arr+i)),所以*(a[1]+2)==

a[1][2]

p要解引用3次才可能是陣列的元素

c語言的題目 設有定義Int a 3,b 4則表示式a b,a b,a 的值為3,答案為什麼是3不明白?謝謝

你是說a 為什麼 3是吧?a 的職會等於a的值,也就是3,然後因為a 所以表達於以回後的a 2.區別答 a 2,然後a 2 區別是最後新的a都會 原來的 a 1 但是a 會等於原來a的值。而 a會等於a 1後的值 也就是賦值後的 好比這題的a 3.a 3,a 2 a 2,a 2.的時候同理。我就知道...

設有變數定義inta3,b5,c10下列表示式的值

a自增自減優先順序高 a 是4 乘以 b 是20,再除以2.0是10.0,再乘以10是100.0 這種題也就考試出,實際開發敢這麼寫肯定被人鄙視 設int a 5,b 6,表示式 a b a b的值是 結果為bai7。條件表示式 du為 表 zhi達式1?表示式2 表示式3。先求解dao表示式內1,...

int a 1,2,3,4int p intint a 1P指向了什麼

1.int a 貌似應該是int a 2.int a 已經把a的地址強轉成int型數字 32bit 所以 int a 1 實際指向了整個陣列記憶體塊的第二個地址,即a 0 的第二個位元組。3.這種用法比較危險,特別是在某些特殊處理器上,如果對32bit int 變數的訪問,訪問地址不是4位元組對齊的...