1樓:匿名使用者
答案是bai c
解決這類題型du
首先要分清型別。zhi
a錯,雖然 p 的型別是
dao (int **) ,a 的型別是 (int**),但是陣列專名代表的屬位址也不能改變。
b錯,因為 p[0]的型別是 (int *),a 的型別是 (int**)。
c對,p[0] 的型別是 (int*),&a[1][2]的型別也是 (int*)。
d錯,p[1]的型別是 (int*), &a 的型別是 (int***)。
2樓:匿名使用者
應該選c。
p是乙個指標陣列,它有四個元素,每個都是乙個指向int型的指標。
a是乙個二維數
回組,它
答的每個元素都是int型的。
a的錯誤是因為p是常量(陣列名都是指標常量),不可以被賦值。而且p和a的型別也不一致。
bcd都是對p的元素賦值,這是可以的,等號右邊應當是乙個int型資料的指標(即位址)。c選項中a[1][2]是a的乙個元素,是乙個int型值,&取了它的位址,所以是正確的。
3樓:匿名使用者
結論:正確的是c
ap=a;//型別不匹配,不正確
bp[0]=a//型別不匹配,不正確
cp[0]=&a[1][2];//型別匹配,正確dp[1]=&a;//型別不匹配,不正確
若有定義語句:int a[2][3],*p[3]; ,則以下語句中正確的是
4樓:匿名使用者
應該選c。
p是乙個指標數
組,它有四個元素,每個都是乙個指向int型的指標。
a是乙個二維陣列,它的每個元素都是int型的。
a的錯誤是因為p是常量(陣列名都是指標常量),不可以被賦值。而且p和a的型別也不一致。
bcd都是對p的元素賦值,這是可以的,等號右邊應當是乙個int型資料的指標(即位址)。c選項中a[1][2]是a的乙個元素,是乙個int型值,&取了它的位址,所以是正確的。
5樓:匿名使用者
int* p[3]是定義了乙個大小為3的陣列指標,也就是定義了三個int型的指標。
p代表指標陣列的首位址,相當乙個二維指標。
p[0],p[1],p[2]代表乙個int型指標c是對的
大一c語言題目 24、若有定義語句:int a[2][3],*p[3]; ,則以下
6樓:匿名使用者
核心在於p的型別。
定義等效於
int *p[3];
這裡p是乙個陣列,包含三個元素,每個元素型別為int *所以a p為陣列名, 不可以賦值。
b p[0]為int*, 而a為二維陣列名,等效於int **, 型別不匹配。
c a[1][2]為a的乙個元素,型別是int,所以&a[1][2]是int*, 和p[0]型別相同, 所以這個賦值是合法的。
d 這個沒什麼說的了,錯的比b還離譜, int ***, 賦值給int*, 型別不匹配。
7樓:匿名使用者
定義中p[3]表示乙個陣列,*p[3]表示乙個整形指標陣列,p[0]是陣列成員,是乙個整形指標,p=a錯因為不能向乙個陣列賦值
int a[2][3], a是乙個二維陣列,因此在等式右邊a表示乙個整形指標的指標,不能賦值給整形指標值p[0],a的子陣列a[0],a[1],a[2]才是整形指標
c 中 a[1][2]是乙個整形值,取位址&a[1][2]就是整形指標,可以賦值給p[0]
d a和 &a意思一樣,表示二維陣列a的位址。
若有定義語句:int a[2][3],*p[3],則以下語句正確的是(c)
8樓:匿名使用者
int a[2][3],*p[3];
因為的優先順序比*高所以p是乙個陣列,這個陣列存放的是指向整數的指標。
即存放的是乙個整數變數的位址。
而&a[1][2]正好是乙個整數的位址。
所以p[0]=&a[1][2]正確。
補充回答:
因為dint *p[3];
p是乙個陣列,這個陣列存放的是整數指標。
p[1]就是乙個整數指標。
但是&a並不是整數指標,它是乙個陣列的指標。
9樓:
帶星號證明是指標,賦值時只能給乙個位址值,我只知道這了,那你就看a是代表首位址還是首個值
若有int a[2][3],*p[3];則為何賦值語句p[0]=a;不對呢?謝謝啦
10樓:匿名使用者
int* p[3];
p是指標陣列,即p中全是指向int的指標(注意是指向int的)。
我寫了個程式(錯誤的程式)測試了下:
#include
int main()
;int *p[3];
p[0] = &i; //1
p[1] = a; //2
}1處可以的,2處就有問題,編譯器(vs 2010)提示"error: a value of type "int(*)[3]" cannot be assigned to an entity of type "int*".
意思是說p[1]是指向int的指標,而不是指向指標陣列(int(*)[3])的指標。
關於指標陣列和陣列指標,lz可以自己去查閱更多詳細資料。
11樓:匿名使用者
這裡p[0]是乙個指標,指標是不能直接用陣列賦值的。
main()
;int *p[3];
p[0]=a[0];
p[1]=a[1];
p[2]=a[2];
for(i=0;i<2;i++)
}getch();}
12樓:北緯踐行者
int *p[3],這定義的是乙個整型的指標陣列,a是二維陣列的首位址,a[0]是行位址,你可以賦值p[0]=a[0],p[0]=&a[0][0],但就是不能讓p[0]=a,這是兩個不同類別的位址,只有當你定義int (*p)[3]的時候,p=a才是合法的。
若有以下定義和語句,則對a陣列元素的正確引用為( )。 int a[2][3],(*p)[3];p=a;
13樓:匿名使用者
選 c。
p 的型別是int (*)[3],是指標的指標。
c選項相當於 p[1][1]。
b選項錯,它相當於 p[2][1],陣列的第乙個座標越界了。
若有定義int a[2][3],*p=a;則以下不能表示陣列元素a[1][2]的是選項:a,*(a[1]+2) b,
14樓:匿名使用者
首先 題目有問題
定義的時候 int *p; 指標p可以指向任何乙個整形變數a是二維陣列名
int *p=a; 這個賦值本身就不對
15樓:
選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 1,b 2,c 3則語句 a丨丨 bc,執行後b的值為多少
2,或運算只需乙個滿足就行 a 2不等於0個,故或運算結果為一,b運算沒得到執行 a 算得結果是邏輯真,跟後面的部分進行邏輯或運算,不管後面的部分算得結果是真還是假,最終結果都是趙,所以後面的部分就不算了。所以運算後 b 的值還是 2。同理,c 的值還是 3。c語言,若有定義 int a 1,b 2...
設有定義語句「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 代表第三行第二列的值...
若有定義語句 int a 3,b 2,c 1,以下選項中錯誤的賦值表示式是
a錯了,不能將3賦值給表示式,b 4已經是個表示式了,既然是表示式就只有真假 即0和1 基礎知識要看仔細點 a錯了,原式 a 4 3,明顯錯誤 a肯定是錯的 變數a是整型,b 4 3這個表示式是bool,所以出錯。a放到程式裡一試就式出來了,只有a報錯,其他的都能通過 若有定義語句 int a 3,...