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...