1樓:
其實pa是乙個指向(包含
復3個元製素的)一維陣列的指標,因此可以指向任何乙個包含3個元素的一維陣列
而a[2][3]是二維陣列,可以看作是由a[0]和a[1]兩個包含三個元素的一維陣列組成,如a[0]就可以認為是包含a[0][0]、a[0][1]、a[0][2]三個元素的一維陣列a[0]
這樣就可以理解pa=a的意義了,由於陣列a的首位址實際上相當於a[0]這個一維陣列的首位址,因此pa指向的是a[0][0]的位址,即&a[0][0]
使用指向陣列的指標的好處是,可以把陣列作為乙個整體,如pa++或pa=pa+1會讓pa的值變為&a[1][0],而不是&a[0][1]
與指標陣列的區別是:指向陣列的指標是乙個指標(只不過它指向的是陣列的位址,並以整個陣列為單位作運算),而指標陣列是多個指標(每個元素都是乙個指標)
假定乙個二維陣列的定義為「int a[3][4]={{3,4},{2,8,6}}」則a[2][0]的值為多少
2樓:喜歡種蘑菇
a[2][0]的值為0
int a[3][4]表示定義乙個
copy3行4列的整bai型陣列a;,}表示初始化du陣列。
最外圍zhi{}中的每乙個{}表示依次對每一行賦值,不夠dao的補0},所以,}表示對陣列的前兩行賦值,每行也是依次賦值,不足補0;
int a[3][4]=,}
最終陣列儲存情況:陣列的下標是從0開始的,如下圖所示。
所以a[2][0]的值為0
3樓:匿名使用者
一般編譯器會將沒有初始化的陣列成員賦值為0,所以int a[3][4]=,回}這麼定以後,陣列a裡的成員答如下:
3,4,0,0
2,8,6,0
0,0,0,0
0,0,0,0
所以a[2][0]的值為0
4樓:匿名使用者
c語言裡的下標是從0開始的,所以a[2][0]其實就是上面的智者構造好的陣列中得第三行第一列的元素0.
5樓:匿名使用者
a[2][0]=0
int a[3][4]表示定義乙個3行4列的整型陣列a;,}表示初始化陣列。
表示依次對每一行賦內值,不夠的補0},所以容,}表示對陣列的前兩行賦值,每行也是依次賦值,不足補0;
int a[3][4]=,}
最終陣列儲存情況:陣列的下標是從0開始的
所以a[2][0]=0
6樓:匿名使用者
是0,裡面沒有的值都是用0表示
c語言指標 定義 int *a[3] 和 int *(a)[3] 有什麼區別??? 書上的沒看懂啊
7樓:匿名使用者
int *a[3];
//因為bai:du陣列zhi名等效於dao指標,內//因此:int *(* (a+3)) 該型別為指標,即:該陣列的元素為容指標變數
int *(a)[3];
//因為:陣列名等效於指標,比()、*操作符都要高階。
//因此:int * ( *(a+3 ) == int **(a+3) 該型別也為指標,即:該陣列的元素為指標變數
8樓:匿名使用者
int *a[3] 和 int *(a)[3]沒有區別,這個括號是多餘的。
如果你問的是int *a[3] 和 int (*a)[3]的區別,則:專
(1)int *a[3] 中 a是陣列,陣列中每個屬元素是個int型別的指標;
(2)int (*a)[3]中 a是指標,這個指標指向乙個長度是3的int型別陣列。
其實,這類問題關鍵就是如何理解(),這裡()就是優先操作,先操作(*a),是個指標,後面就是int [3],是個陣列。
9樓:匿名使用者
因為 [ ]的優先順序 會比 *號高;所以 int *a[3]; a先與[3]結合 代表乙個陣列;其次再與int * 結合;
其他的同wxhysoft
10樓:飄秋楓嵐
int *a[3]叫指標陣列,int *(a)[3]叫指向陣列的指標,名字都不一樣,用法也不內一樣。
int *a[3]一般用來存放一系列的字容符串。
如 int *a[3]=;
int *(a)[3]則基本等同於int a[3],用於在函式中做形式引數,接受傳來的資料。如
呼叫fan(a[4][3]);
函式int fan(int *(a)[3])
c語言的陣列問題,若有定義:int a[2][3];以下選項中對a陣列元素正確引用的是 a.a[2][!1] b.a[2][3]
11樓:匿名使用者
選d。乙個二維陣列可以被認為是乙個帶有 x 行和 y 列的**。下面是乙個二維陣列,包含 2 行和 3列:
因此,陣列中的每個元素是使用形式為 a[ i , j ] 的元素名稱來標識的,其中 a 是陣列名稱,i 和 j 是唯一標識 a 中每個元素的下標。i最大值為1,j最大值為2,超出此範圍則表示錯誤。
12樓:孤獨的蠍子
d 因為1>2為假,所以表示式為0 ; 其次!1也就是非真,即為假,所以a[1>2][!1]等價於a[0][0]
13樓:藍人
d,陣列的有效範圍是a[0][0] - a[1][2]
a,b,c都超過範圍了。
14樓:匿名使用者
定義的陣列引用時那個數下標減1
c語言問題求詳細解答 若有如下定義:int a=2,b=3; float x=3.5,y=2.
15樓:時夏
答案選d
你得搞復清楚函式的概念制,乙個函式要呼叫必bai須得有定義。當然如du果呼叫出現zhi在定義之後則可以直接呼叫,dao如果呼叫出現在定義之前,那麼在呼叫之前需要對這個函式進行宣告,宣告和定義必須相同。
還有函式的返回值型別為void時表示函式沒有返回值,不能使用函式的返回值。
a錯 因為呼叫在定義之前但是沒有宣告
b錯 函式定義的時候返回值型別為void,卻欲圖使用函式的返回值。
c錯 函式的宣告返回值為int,定義返回值為void 不相符d正確請採納。
大一c語言題目 24、若有定義語句:int a[2][3],*p[3]; ,則以下
16樓:匿名使用者
核心在於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*, 型別不匹配。
17樓:匿名使用者
定義中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的位址。
在c語言中,設有如下定義: int a=1,b=2,c=3,d=4,m=2,n=2; 則執行表示式:(m=a>b)&&(n=c>d)後,n的值為,過程
18樓:無憂網事
n的值抄仍然為2,沒有改變!
過程:先計算a>b,值為0,賦給m的值為0,表示式m=a>b的值也是0。
對於&&邏輯運算,不管後面(n=c>d)的值如何,都不影響(m=a>b)&&(n=c>d)的最終結果,因此,c語言不再對表示式n=c>d進行計算。因而n的值沒有改變!!
19樓:匿名使用者
n的值為2
a = 1, b = 2 ===> m = a > b ===> m = 0
&&支援短路運算
所以m = a > b的值為0 不用考慮後面的值了所以n的值任然為2
c語言 定義則執行y=(*--p)++後,y的值是
20樓:
這好解釋啊,因為++是後++,要等到把(*--p)的值賦給y後(*--p)的值才會增1。所以結果是y=1,a[0]=2。你可以用下面的**驗證:
int main(void),y,*p=&a[1];
y=(*--p)++;
printf("%d %d\n",y,a[0]);
return 0;}
C定義二維陣列,C 定義乙個二維陣列
不是儲存到記憶體中 就是對陣列dham 3 32768 進行初始化 相當於int a 5 前面的const是說你在用到陣列的值時不能改變他的值 如果沒有const就可以改變 比如我定義的a 5 就可以改變它的元素的值 不如 你可以改變a 0 100 但是dham 3 32768 中的值你就不可以改變...
c語言中,定義了二維陣列a,當呼叫函式fun a
你的fun a 中a是什麼資料型別?無論哪種資料型別,a這種資料型別不存在,你自然不能把它當作形參了!a 表示乙個指向指標的指標標量a,後兩種是函式傳參的形式,是語言定義的規範。可直接將a定義為乙個指標型別,直接傳參 如 typedef a n m p2 darray p2 darray fan p...
若有如下定義 int a 1,b 2,c 3執行語句b a4bac之後,c的值是
3。判斷是從左向右,前面的可以判斷的話後面的不執行。表示式a 4值為1,但表示式b 執行後 c 的值是 4 啊 在這個語句裡用的 c 先返回 c 的初始值3 c的值是4,c c c 1 開始c 3,所以c的值是4!設有 int a 1,b 2,c 3,d 4,m 2,n 2 執行 m a b n c...