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樓: 意思正確,寫法上錯誤才正確。不知你問的什麼意思。 選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 賦值... 陣列不能這樣初始化要用逗號,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... 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都表示位址容,所以 就是取位址對...設有定義語句inta3,bpa要將變數a
在c語言中,定義陣列inta4345678910則a
若有定義「int a 51,2,3,4,5p a則以下表示式中值為3的是A a Bp 2 C p 2 D a