c語言如何定義未知個數的數組?
C語言在數組個數未知的情況下,根據應用情況不同,有三種方式。
1,數組元素總數未知,但是需要存儲的內容是已知的。 其實這是一種變相的已知個數,只是編程者不去計算總個數,把這個工作交給系統來做。這時可以通過數組個數留空,顯式初始化數組進行聲明。 比如 char s[] = "this is a test string"; 就是初始化了這樣一個數組s,其空間個數隱式的由初始化字符串決定。
2,數組元素總數未知,但最大規模已知。 比如不知道數組的總個數,但是確定不會超過100個,那么就可以定義一個100個元素的數組,供存儲調用。
3,動態分配數組。 通過malloc函數,可以動態的分配數組,然后記錄下當前分配的數組元素個數,并使用該數組。當數組空間不足時,可以通過realloc函數,重新分配空間,擴大數組元素個數。 比如 int size = 100; int *p = (int *)malloc(sizeof(int) * 100); // 初始化分配100個元素空間。用size保存當前數組規模。 p = realloc(sizeof(int)*(size + 100), p);//當空間不足時,增加100個元素。 size+=100;//需要注意的是,必須同步維護size的大小,否則會出錯。