C語言中動態分配陣列 一維

2021-04-26 17:43:46 字數 1170 閱讀 6774

問題:如何動態的定義及使用陣列呢?

記得一般用陣列的時候都是先指定大小的。在c++裡用new可以做到,純c語言好像沒法做到,今天在逛的時候終於找到了c語言中的用法(看原貼

):int *a;

int n;

scanf("%d", &n);

a = (int *) malloc(n * sizeof(int));

....

free(a);

這樣就動態分配了陣列a[n]。陣列的長度n可輸入確定,也可用程式中的變數確定。但要注意程式結束後要用free()將其釋放,否則記憶體會洩漏。

驗證:#include

#include

int main()

free(a);

printf("/n");    

return 0;

}結果:

input array length: 100↙

1    2    3    4    5    6    7    8    9    10

11   12   13   14   15   16   17   18   19   20

21   22   23   24   25   26   27   28   29   30

31   32   33   34   35   36   37   38   39   40

41   42   43   44   45   46   47   48   49   50

51   52   53   54   55   56   57   58   59   60

61   62   63   64   65   66   67   68   69   70

71   72   73   74   75   76   77   78   79   80

81   82   83   84   85   86   87   88   89   90

91   92   93   94   95   96   97   98   99   100

*另外:「只有c99支援可變長陣列,c89,c++都不支援」即在支援c99標準的編譯器裡可以定義乙個變數如n,通過輸入或其他方法對其賦值後就可以定義乙個大小為n的陣列a[n]了。

**:一步一腳印

注:明白了,就是簡單的堆(heap)的應用,怎麼早沒注意到呢。。。。。。

C語言中動態分配陣列

很多人在編寫c語言 的時候很少使用動態陣列,不管什麼情況下通通使用靜態陣列的方法來解決,在當初學習c語言的時候我就是乙個典型的例子,但是現在發現這是乙個相當不好的習慣,甚至可能導致編寫的程式出現一些致命的錯誤。尤其對於搞嵌入式的人來所,嵌入式系統的記憶體是寶貴的,記憶體是否高效率的使用往往意味著嵌入...

C語言中動態分配陣列

原文 如何動態的定義及使用陣列呢?記得一般用陣列的時候都是先指定大小的。當時問老師,老師說是不可以的。後來又問了一位教c 的老師,他告訴我在c 裡用new可以做到,一直不用c 所以也不明白。今天在逛論壇時終於找到了c語言中的用法 int a int n scanf d n a int malloc ...

C語言動態分配陣列

最近在研究c語言相關的東西,遇到了一些問題,主要是關於陣列記憶體分配的問題。我們最常用的陣列分配方式就是使用 int array 來分配固定長度的陣列,但是當需要動態分配陣列長度的時候怎麼辦呢?最近在使用的時候就遇到了,然後自己搜了搜相關的使用方法。1.先介紹基本資料型別的建立方法 int arra...