定義int a,定義乙個int a 2 3 , p 3 ?

2021-03-10 19:01:04 字數 3939 閱讀 1842

1樓:匿名使用者

a 雖然是代表 2維陣列a 的首位址,

但 要用來給指標陣列 p賦值,應該用a[0],

這樣 才可能對應 吧

2樓:

int a[2][3],*p[3];是復int a[2][3];,制int *p[3];的意思,前者是宣告乙個bai2行3列的int型二維

du陣列,a代表a[0]的位址&a[0],顯然a就是下標zhi為0的那「dao一行」的位址,即a是乙個int **型指標;後者p是乙個有3個元素的陣列,每乙個元素都int *型指標,自然p[0]就是int *型指標。看,若寫p[0]=a;,等號左邊是int *型指標,而右邊是int **型指標,左右型別不匹配,錯。實際上寫p[0]=a[0];就對了——a[0]是a的第0行的第乙個元素的指標int *型,就匹配了。

同理p[0]=a[1];也正確,同樣寫p[0]=&a[0][0];也正確……

3樓:匿名使用者

int *p[3]; //定義了3個變

復量p[0],p[1],p[2],每個變數都是制int *型別的a的資料類bai型是指向3個元素du一組的陣列,zhi每個元素都dao

是整型資料

因此要想實現p[0]=a;需要定義p變數,是a資料型別的,可以寫:int (*p)[3];

若有定義語句: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];

8樓:匿名使用者

選a ,因為p是指標,指向陣列首位址。

9樓:**夢幻

c正確。

baia錯誤,因為p是指向du乙個指標陣列,作zhi為陣列名,dao不能指

向別的地方。內

b錯誤,因為p[0]是乙個容int指標,也就是int*;而a是乙個指向指標的指標int**。

c正確,因為p[0]是乙個int*,a[1][2]是int,&a[1][2]是int*,型別吻合。

d錯誤,因為a作為陣列名,不能取位址。何況即使能取,p[1]是int*,&a是int***,型別不對。

若有定義語句:int a[2][3],*p[3],則以下語句正確的是(c)

10樓:匿名使用者

int a[2][3],*p[3];

因為的優先順序比*高所以p是乙個陣列,這個陣列存放的是指向整數的指標。

即存放的是乙個整數變數的位址。

而&a[1][2]正好是乙個整數的位址。

所以p[0]=&a[1][2]正確。

補充回答:

因為dint *p[3];

p是乙個陣列,這個陣列存放的是整數指標。

p[1]就是乙個整數指標。

但是&a並不是整數指標,它是乙個陣列的指標。

11樓:

帶星號證明是指標,賦值時只能給乙個位址值,我只知道這了,那你就看a是代表首位址還是首個值

若有定義語句int a[2][3],*p[3]那麼為什麼p[0]=a;語句不對?

12樓:

看*p[3]這部分,由於右結合性,所以p首先是乙個陣列,然後它才是乙個指標,所以他是3個指標,而不是「指向帶有三個元素的陣列」的指標。

所以p[0]=a;是錯誤的

應該這樣寫:

int a[2][3],(*p)[3];

p=a;

這樣是正確的

13樓:匿名使用者

int a[2][3]是二維陣列

int *p[3]是一維

指標陣列,意思是由3個一維指標組成的陣列,其中p[0],p[1],p[2]是3個一維指標

所以就很明顯了,a是二維的,p[0]是一維的,不可以賦值如果是二維指標,如:int **p; 那麼p=a;就是正確的

14樓:匿名使用者

p[0]=a??這怎麼看都是錯誤的!!

指標是比較難理解的。

你要分清 指標和陣列的關係, 指標陣列的概念。

int a[2][3]=;

如果你定義 int *p 怎樣使用p訪問此多維陣列的值呢?

這種情況 p的初始化是:p =a[0];

訪問陣列的得**是:

int *p;

for(p =a[0];p錯誤,a是乙個整型位址p = &b //錯誤,&b是乙個 int[4]的位址p = &a //正確

所以用 int (*p)訪問一位維陣列的**如下:

int a[3] =;

int (*p)[3];

p = &a;

int i;

for(i=0;i<3;i++)

cout<<*((*p)+i)<

c語言問題int a[2][3],*p[3]之後為什麼p[0]=&a[1][2]是正確的啊

15樓:匿名使用者

int *p[3] 的意思是p中的每乙個元素存放的是乙個整形變數的位址

所以給p中的元素賦值要取某乙個整形變數的位址所以p[0]= &a[1][2]是正確的...意思是把a[1][2]這個變數的位址賦給p[0]

16樓:璐人釔

int a[2][3]就是乙個陣列,所以a[1][2]就是乙個int整數,所以&a[1][2]就是乙個int整數的位址

int *p[3]也是乙個陣列,不過型別是int*,也就是乙個int整數的位址,p[0]就是第乙個元素而已

17樓:

意思正確,寫法上錯誤才正確。不知你問的什麼意思。

設有定義語句inta3,bpa要將變數a

選d 是用來取指標指向的位址中的資料的.a不是指標,當然不能寫作 a了.而b a之所以對是因為 int p a 它相當於int p p a p是指標,所以 a也是指標,所以才會有 a 之說啊 設有語句 int a 3 則執行了語句 a a a後,變數a 的值是 a 3 b 0 c 9 d 12 賦值...

在c語言中,定義陣列inta4345678910則a

陣列不能這樣初始化要用逗號,a 0 3 6 這個陣列貌似不對吧 c語言問題 若有說明int a 4 1,2,3,4,5,6,7,8,9 則陣列a第一維 若有說明int a 4 則陣列a第一維是3。定義陣列並賦值時c語言規定下標是這樣的,a n 中的n個元素應該是a 0 a n 1 因此int a 4...

若有定義「int a 51,2,3,4,5p a則以下表示式中值為3的是A a Bp 2 C p 2 D a

c.p 2 沒有乙個是指向a 2 的,但c的結果是1 2 3 若已定義 int a 5 0,1,2,3,4 p a,則以下輸出結果為3的是 選b。p 3 等同與a 3 陣列的名字a,是表示陣列首位址的位址常量。其值就是 a 0 p a 那麼p的值也是內 a 0 p和a都表示位址容,所以 就是取位址對...