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

時間 2021-07-21 03:29:33

1樓:焮欣

首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始位址,第二維就是某組資料中的某個值.其次,你要知道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是系統預設值)希望對你有所幫助.^-^

2樓:匿名使用者

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

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

但假如int ary = ;

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

這應該能懂

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

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

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

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

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

3樓:佳樂比海

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

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

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

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

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

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

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

4樓:匿名使用者

正確寫法如下:

char

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

5樓:匿名使用者

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

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

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

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

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

6樓:孔培勝羅婉

以二維來說,假若給定的陣列為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語言 定義二維陣列

7樓:匿名使用者

二維陣列定義的一般形式是:

型別說明符 陣列名[常量表示式1][常量表示式2]其中常量表示式1表示第一維下標的長度,常量表示式2 表示第二維下標的長度

int a[3][4];

8樓:匿名使用者

d. int a[2]=,}

定義陣列時,只能省略第一維的值,其餘各維的數值必須明確指定。

9樓:井上心

首先你得知道c語言中其實都是一維陣列好了,然後你得知道不給明確元素的值版時[ ] 裡面必須是常量權,如 int[2] ,否則你就得把它中得元素寫出來,如int= .好了,那麼二維陣列實際也是一維陣列,a[2][2]中第乙個a[2]表示我是乙個陣列,有兩個元素,然後這兩個元素也是陣列型別的。這個題目太簡單,a,c可以扔了,b理解了上述也可以扔,答案就是d了,其實a={(1,2),(3,4)也是對的。。

求助 C語言二維陣列指標問題,c語言二維陣列用指標表示的問題

1.對於int p a p型別和a是不同的。p是指向乙個指標 指向int型別的量 的指標,a則是指向乙個一維陣列 含2個int元素 的指標。想要建立相同型別的指標應該用int p 2 才行 3.感覺p跟a就同級吧但型別不同 所以其實int p a 兩側的指標的型別是不相同的,只是a的值賦給p而已 假...

C語言題目(關於二維陣列)關於二維陣列的c語言題目

二維陣列定義的一般形式是 型別說明符 陣列名 常量表示式1 常量表示式2 其中常量表示式1表示第一維下標的長度,常量表示式2 表示第二維下標的長度。int a 3 4 如果 int a m n 是乙個已賦值的陣列,則可以用以下的語句段以矩陣形式列印這個陣列 int i,j for i 0 i 二維陣...

關於C語言二維陣列指標問題

如果是前者的話,每行應該輸出乙個元素才對,如果是後者的話又應該只能輸出每一行的首元素才對呀?正如樓上2位仁兄所言,p 指的是前者 下乙個元素的位址 樓主的疑問似乎是認為,該程式段 每行應該輸出乙個元素才對 這是不對的,語句printf 3d p 是每輪迴圈都要執行的,即按每個數字佔3個int大小列印...