C語言,申請動態大小的二維陣列的時候碰到點問題

時間 2021-09-11 22:33:34

1樓:匿名使用者

int *a[2];

int n;/*n緊跟a定義*/

scanf("%d",&n);

a[2]=(int *)calloc(n,sizeof(int)); /*a[2] 陣列越界啦,越界之後,就覆蓋了n的值了*/

a[0]=(int *)calloc(n,sizeof(int));

a[1]=(int *)calloc(n,sizeof(int));

-----------------

我的意思是你定義了int a[2];

你只能訪問a[0]和a[1],a[2]就是下標越界了int (*a)[2];/*陣列指標*/

int n;

scanf("%d",&n);

a=(int (*)[2])malloc(2,sizeof(int));

2樓:匿名使用者

應該這樣:

char **a;

int x;

scanf("%d",&x);

a=malloc(sizeof(char *)*x);

a[0]=malloc(sizeof(char)*20);

scanf("%s",a[0]);

puts(a[0]);

a[x-1]=malloc(sizeof(char)*30);

scanf("%s",a[x-1]);

puts(a[x-1]);

c語言中如何定義動態二維陣列並輸出

3樓:會飛的小兔子

intmain()

//釋放記憶體

for(i=0;ifree(p[i]);

free(p);

return0;

}擴充套件資料c語言中通過函式傳遞二維陣列

#include

void func(int n, int a[size])void main()

4樓:達豐

實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。**如下:

int main()

//釋放記憶體

for(i = 0; i < m; i ++)free(p[i]);

free(p);

return 0;}

5樓:_葉子妞妞

可以按照下面步驟進行定義二維陣列並輸出:

1 定義二維指標。

2 確定陣列維數,即行數和列數。

3 申請行數個一維指標大小空間,並賦值給二維指標。

4 對於每個一維指,申請列數個元素的空間,並賦值給對應的一維指標。

5 輸入或賦值資料。

6 使用雙重迴圈,逐個範圍儲存單元並輸出。

7 逐個釋放一維指標上的記憶體。

8 釋放二維指標上的記憶體。

以整型二維陣列為例:

下面的**,實現先輸入二維陣列的行數m和列數n,並再輸入m*n個整型資料存到動態二維陣列中。最後輸出所有二維陣列的元素值。

#include //包含輸入輸出函式

#include //包含動態記憶體分配函式。

int main()

//釋放記憶體

for(i = 0; i < m; i ++)free(p[i]);

free(p);

return 0;}

6樓:匿名使用者

多維陣列一維

化...

#include

#include

int main()

}for(i=0;i

printf("\n");}}

7樓:匿名使用者

先定列空行 a[2]

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 號元素的首地址,...

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

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