若有定義 int a 5p a則對a陣列元素地址正確引用的是a p 2 aa說詳細點謝謝

2021-05-13 06:54:59 字數 1493 閱讀 2783

1樓:

應該是p+2與&a

&a[5]越界,a++語法錯誤,陣列名可看作一個指標常量,不可修改

若有定義:int a[5],*p=a; 則對a陣列元素地址正確引用的是( )。 &a[5] p+2 a++ &a 說詳細點謝謝

2樓:匿名使用者

若有定義:int a[5],*p=a; 則對a陣列元素地址正確引用的是(p+2 )。

&a[5]//錯誤,因為越界了

p+2 //指標,指向第三個元素的地址,即&a[2],正確a++ //語法錯誤,a為地址常量不可++&a //a本身就是地址,不需要增加&

3樓:自我程式設計

對a陣列元素地址正確引用 p+2 。

p指向a首地址(也就是a[0]的地址),p+2就是a[2]的地址,相當於&a[2]。

&a[5]是錯的,訪問越界了,陣列元素最後一個是a[4]。

a表示陣列的首地址,本身是地址常量,不能賦值。所以a++是錯了。

&a也是錯的,a本身就是地址。

若有以下定義,則對a陣列元素的正確引用是

4樓:匿名使用者

答案是 d。

a項,由於 a[5] 已經超出陣列外了,所以 *&a[5] 不是 陣列元素。

b項,a+2 是a[2]的地址,不是陣列元素。

c項,*(p+5)相當於a[5],已經超出陣列範圍,不是陣列元素。

d項,正確,*(a+2)相當於 a[2]。

5樓:匿名使用者

ddongyue2008的解答是對的。

c語言若定義int a[5],*p=a;則對a陣列元素正確引用為哪個?為什麼?

6樓:

選d,c中p最多加4,因為陣列是從0開始的!

若定義int a[5],*p=a;則正確引用陣列元素的是求詳細分析過程 謝。。。

7樓:及時澍雨

若定義int a[5],*p=a;

則a選項中,*&a[5],

&a[5]是a[5]的地址,

*&a[5]是a[5]本身

但數列中沒有a[5]這個元素,錯誤。

*與&為逆運算

b選項中*a+2

*a為a[0]

則*a+2為a[0]+2,不是a[2],錯誤c選項中*(p+5)

p+5=a+5為a[5]的地址

*(p+5)為a[5],

如同a中,數列中沒有a[5]這個元素,錯誤。

d選項中,*(a+2)

a+2為a[2]的地址

*(a+2) ==a[2]與a[2]等同選d

若有定義 int a 41,204,6,8,10則初始化後,a得到的初始值

a 2 2 8.a 0 0 1,a 0 1 2,a 0 2 0,a 0 3 0,a 1 0 0,a 1 1 0,a 1 2 0,a 1 3 0,a 2 0 4,a 2 1 6,a 2 2 8,a 2 3 10.陣列定義,從 前往後,個數不足專的補屬0。是8,你是3行4列的陣列,所以1,2,0,4是第...

若有定義語句int a 12,則執行表示式a a a a

a a a a,運算子和結合性,bai由運算子優 先級,du 優先順序為zhi4,和 優先順序為14,結合方向從dao左至回右,和 從右至左,所以 先計答算 a a a 12,a a 12 12 24再計算 a a a 即a a a a 12 24 12,最後計算 a a,即a a a 12 12 ...

若有定義語句int a 12,則執行表示式a a a a後a的值為

a a a a,運算子和結合性,由運算子優先順序,優先順序為4,和 優先順序為14,結合內方向從左至右,和 從右至左容,所以 先計算 a a a 12,a a 12 12 24再計算 a a a 即a a a a 12 24 12,最後計算 a a,即a a a 12 12 24 若有定義語複句in...