若有定義語句 int a則下列語句正確的是

2021-03-10 18:13:12 字數 3776 閱讀 4478

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