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

2021-09-11 00:01:57 字數 3225 閱讀 4009

1樓:巢琨瑜

float (*a)[5]是定義了一個指向陣列的指標,如果要把它當成二維陣列的話,相當於列數為5,行數可以動態分配。如:

float (*a)[5];

int n = 2; //定義行數為2

a = new float[n][5];

int sum = 0;

for (int i=0; i

2樓:匿名使用者

對於你定義的這個陣列,它表示有5個float*型別的指標,也就是說它定義了一個二維陣列,這個陣列有5行,這5行的首地址分別為a[0],a[1],a[2],a[3],a[4],但是沒有給每一行具體分配空間,所以還不能說它有多少列,你要為每一行分配空間之後再賦值,然後才能計算行和

3樓:阪哥

float f=0;

for(int n=0;n<5;n++)

4樓:活在當下

float (*a)[5]; 是說a為指向含5個元素的一位陣列的指標變數。

求和:#include

main()

;int i,sn = 0;

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

printf("%d\n",sn);}

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樓:

*(p+1)單獨使用時表示的是第 1 行資料,放在表示式中會被轉換為第 1 行資料的首地址,也就是第 1 行第 0

個元素的地址,因為使用整行資料沒有實際的含義,編譯器遇到這種情況都會轉換為指向該行第 0 個元素的指標;就像一維陣列的名字,在定義時或者和

sizeof、& 一起使用時才表示整個陣列,出現在表示式中就會被轉換為指向陣列第 0 個元素的指標

12樓:lzs丶灬

首先p是一個地址

然後p=a,所以p指向了a這個二維陣列

p+2也是一塊地址指向a[2]

*(p+2)指向a[2][0]

*(p+2)+4指向a[2][4]

你自己理解吧 指標坑爹的一筆

關於c語言二維陣列輸出問題,C語言程式設計二維陣列輸出一個23的矩陣

二維bai陣列是由一維陣列構成的,迴圈第du一維輸出zhi就可以了 include stdio.h int main int argc,char argv int i for i 0 i 7 puts s i return 0 執行結果 版空的那一行就是那個權空字串的輸出結果。c語言程式設計 二維陣...

c語言中二維陣列aij為什麼c語言中二維陣列aij為什麼aa

在c語言中,二者是相同的地址值。所以可以說a a.二維陣列a定義為a i j 時,代表一組資料,有i行j列,共計i j的元素。這組資料在記憶體中是連續存放的。而在c語言的使用中,a是二維陣列的首地址。a也就是a 0 是二維陣列第一行的首地址。所以,二者是相同的地址值,即資料a 0 0 的地址值。也就...

c二維陣列傳遞問題,C語言怎麼以二維陣列作為引數傳遞的問題

你這裡nn裡面確實是二維陣列,char al 10 是說al是一個一維維度為10的二維陣列指標變數。因此和你的ne陣列是對應的,傳參是沒問題的。錯誤在於 1.你的函式呼叫有問題 nn ne 2.你給陣列賦值,al 0 asd 這種使用,是僅在陣列初始化的時候被允許的。如果要實現這個字串放到陣列,可以...