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

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

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語言中二維陣列中指標的問題

假若定義 int a 10 int p a 那麼p指向a陣列的首地址 若想要找到a 3 則 p 4 這你看到了嗎?首地址 相當於此陣列的名字。因為陣列元素在記憶體中是連續的 邏輯上 所以 知道了首地址就知道了這個陣列所有元素的位置二維應該同理 我也是初學。只能這麼告訴你。但願我的描述是正確的。 a ...

C語言二維陣列的排序問題,c語言二維陣列

不是。這麼說吧,陣列名本身就是指標,指向陣列的第一個元素。至於你所說的呼叫呼叫二級 二維吧 陣列,難道不是如普通變數般直接呼叫嗎?根據問題補充說,這是不允許的,main 函式的形參是固定的不能傳遞指標。而一般的自定義函式只能用傳遞首地址的形式來傳遞二維陣列,例子如下 定義 int a x y int...

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

以下能正確定義二維陣列的是 以下能正確定義 陣列的是 去掉二維兩字 a int a 3 語法錯,沒帶初始化,不允許用 空白 不允許 陣列大小不定。b int a 正確定義了陣列,是一維陣列,陣列元素只有1 個,初始化數值為 2 3 就是 6。c int a 3 語法錯,花括號裡沒填初始化數值。d i...