關於C語言定義二維陣列的問題,c語言關於定義二維陣列的問題

時間 2021-09-11 22:25:28

1樓:

以下能正確定義二維陣列的是 -- 以下能正確定義 陣列的是 (去掉二維兩字)。

a) int a[ ][3]; -- 語法錯,沒帶初始化,不允許用 [空白],不允許 陣列大小不定。

b) int a[ ]= -- 正確定義了陣列,是一維陣列,陣列元素只有1 個,初始化數值為 2*3 ,就是 6。

c) int a[ ][3]=; -- 語法錯,花括號裡沒填初始化數值。

d) int a[2][3]=,,}; -- 語法錯,陣列宣告為2行3列,卻初始化為3行2列。 如果是 int a[3][2]=,,}; 語法就正確了。

所以答案是 b

2樓:

首先明確個概念 二維陣列應該是個指標

a是因為不知道確切的大小 所以編譯報錯 c和a一樣d是因為對二維陣列賦值存在問題

b就是個指標

不管是什麼陣列都是一片連續的記憶體空間 那麼就有個對應的入口地址這個明白 不管是什麼陣列都是這樣的 二維其實是個一維的只是認為規定了下 方便吧

3樓:匿名使用者

你確定你沒搞錯?int a=是一維陣列啊!

二維陣列都不是。

a的話給出初始值就是了。

c的話沒這樣的寫法,編譯出錯。

d的話編譯出錯。

4樓:熊冉洪洋

首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始地址,第二維就是某組資料中的某個值.其次,你要知道a[4]所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度(元素總個數/4,如果不能整除,則長度加1,此時還應該有幾個沒有賦初值的陣列元素).

而a[3]的意思從表面上看可以成立,但問題是編譯器不能直接識別其第二維的確切長度(你可以考慮,如果總的初值個數為2時,可以認為a的第二維長度為1,也可以是2,.......),這樣就會產生錯誤.所以,可以a[4]=這樣定義,而不能定義a[3]=。

對於你補充的問題,其實我已經講了.因為賦初值是5個元素,所以5/4=1,但除不盡,所以要加1,即實際陣列a實質上定義為a[2][4],其內元素為:

1234

5000(後面的三個0是系統預設值)

希望對你有所幫助.^-^

c語言關於定義二維陣列的問題

5樓:焮欣

首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始地址,第二維就是某組資料中的某個值.其次,你要知道a[4]所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度(元素總個數/4,如果不能整除,則長度加1,此時還應該有幾個沒有賦初值的陣列元素).

而a[3]的意思從表面上看可以成立,但問題是編譯器不能直接識別其第二維的確切長度(你可以考慮,如果總的初值個數為2時,可以認為a的第二維長度為1,也可以是2,.......),這樣就會產生錯誤.所以,可以a[4]=這樣定義,而不能定義a[3]=。

對於你補充的問題,其實我已經講了.因為賦初值是5個元素,所以5/4=1,但除不盡,所以要加1,即實際陣列a實質上定義為a[2][4],其內元素為:

1 2 3 4

5 0 0 0 (後面的三個0是系統預設值)希望對你有所幫助.^-^

6樓:匿名使用者

首先 假如定義一個一維陣列 int ary;

缺少了一維陣列的長度 系統無法按大小分配空間;

但假如int ary = ;

就可以根據初始化的元素個數來把ary定義成相當於ary[2];

這應該能懂

再次c語言中沒有多維陣列的概念 我們平常說的二維陣列其實是「陣列的陣列」 c語言對多維陣列的定義也是定義成

"陣列的陣列的陣列的..."

所以 當定義二維陣列int a[4] = ;

其實是 「定義了兩個以[4]為長度的陣列」(這說法可能不準確)所以在定義二維陣列並初始化時 需要指明第二維的長度 好讓編譯器根據初始化元素的個數來確定陣列的大小

文字表述欠缺專業 但 意思是這樣 希望能明白呵呵

7樓:佳樂比海

主要是分配記憶體的問題.

a[i][j]是陣列的陣列,意思是定義i個元素的陣列,每個元素都是一個含有j個元素的陣列.

a[4]是定義了n個含有4個元素的陣列,如:

a[4]=,,}是定義了3個"含有4個元素的陣列"的陣列.雖然3個自定義的,但是是確定的數字。程式可以分配記憶體.

而a[3]是定定義了3個"含有n個元素的陣列"的陣列.如:

a[3]=},由於n的值是不確定的(如上有3個的,2個的),所以程式無法為這個陣列分配記憶體空間.

c語言中二維陣列的定義問題

8樓:匿名使用者

正確寫法如下:

char

fd_jgf1[maxitemlen+1]=;說明:把null去掉

9樓:匿名使用者

1. 二維陣列的第一個維度預設是:

舉個例子:int tar[2] = ;

因為大括號中有4個元素,而且第二個維度是2,所以就可以計算出來第一維度是2.所以是可以預設的。

2. 你的這個例子中,第一維預設的應該是(7*8+1)/(__maxitermlen__+1) 向上取整。

3. 因為fd_jpf1[i]是一個一級指標,儲存的是地址,設定為null表示為空。在這裡應該是把它當做這個陣列中有效元素的結束的標誌了。

10樓:孔培勝羅婉

以二維來說,假若給定的陣列為a[3][5],這是一個二維陣列,在c語言中,計算機在執行這個陣列前,二維陣列就是

a[0][0]

a[0][1]

a[0][2]

a[0][3]

a[0][4]

a[1][0]

a[1][1]

a[1][2]

a[1][3]

a[1][4]

a[2][0]

a[2][1]

a[2][2]

a[2][3]

a[2][4]

不要看我將它排成3行,其實在計算機內部,它是在一行連續排列的,因此a[0]就代表a[0][0],a[1]代表a[0][1],a[4]代表a[0][4],a[5]代表a[1][0],怎麼來不就是行號1*每行的元素個數+0=1*5+0=5;

a[2][2]代表的是2*5+2=12,所以代表a[12].解釋清楚了嗎?

理解了別忘了給我加分(選我)。

c語言問題。定義一個二維陣列

11樓:ok洛陽水席

#include

int main()

sum=0;

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

return 0;

}樓主基本沒有大錯誤,只是不夠仔細,用來儲存特定值的變數使用前一定要初始化,如本例中的最大值,最小值,下標,都是必須初始化的!

整型與整型運算會得到整型,1/2=0,5/4=1;系統會捨去小數部分。只要將其中一個提升至浮點型即可,如1.0/2,5/4.

0,如果是兩個整型變數,可以寫成(float)a/b,即可使得得到浮點型結果!

2013 5 25 7:05

1l耗時 4min

12樓:匿名使用者

第七行scanf("%d",&arr[5][6]);這句就有問題了,首先應改為scanf("%d",&arr[i][j]);還有其他錯誤,修改後:

#include

int main()

max=arr[0][0];

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

for(j=0;j<6;j++)

if(maxarr[i][j])

else ;

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

} }

return 0;}

13樓:匿名使用者

scanf("%d",&arr[5][6]);

應該改為:

scanf("%d",&arr[i][j]);

C語言問題。定義二維陣列,C語言問題。定義一個二維陣列

ok洛陽水席 include int main sum 0 for i 0 i 5 i return 0 樓主基本沒有大錯誤,只是不夠仔細,用來儲存特定值的變數使用前一定要初始化,如本例中的最大值,最小值,下標,都是必須初始化的!整型與整型運算會得到整型,1 2 0,5 4 1 系統會捨去小數部分。...

c語言二維陣列問題

寫完以後我發現有點長,樓主給點耐心看,不懂我們再交流 a是整個二維陣列的首地址,short長度為2,sizeof a 2 5 5 50 a 1指向二維陣列的第二個元素,它僅僅是一個指標,如果在a 1前面加一個 號,就是第二個元素的值,即a 0 1 所以,a 1是一個指標,它指向二維陣列中的某個數,指...

C語言的問題關於二維陣列的

從二維陣列的角度來看,a是二維陣列名,a代表整個二維陣列的首地址,也是二維陣列0行的首地址a 1代表第一行的首地址。int a 3 4 設陣列a的首地址為1000。a 0 是第一個一維陣列的陣列名和首地址,因此也為1000。a 0 或 a是與a 0 等效的,它表示一維陣列a 0 0 號元素的首地址,...