C語言如何定義一組長度不定的數組?
C語言中實現變長數組有幾種方式:1.柔性數組 2.動態分配內存
1.使用柔性數組的話就是在結構體中定義一個長度為0的數組:
struct MyData { int nLen; char data[0];};數組的長度為0就表明數組占用的長度只有一個數組名,當要使用的時候就可以直接分配制定長度的空間,使用完之后釋放即可。
int nLen = 100;MyData *myData = (MyData*)malloc(sizeof(MyData) + 100);
再對這個數組進行其他操作,操作完了之后free掉分配的空間。
2.使用動態分配的方式,和1差不多,只不過要先定義一個指針用來保存分配好的內存空間的其實地址,分配好之后,這個指針就可以當作數組來使用,你要分配多少都是可以變化的,操作完成之后同樣要進行釋放。
char *p;
p=(char *)malloc(100);
//對p進行操作
free(p);
如果你的變化的長度是來自其他計算公式或者函數也可以,可以另外定義一個函數,函數的返回值可以是結構體或者指針,而參數就是這個變化的長度。
char* TEST(int len){
char *p; p=(char *)malloc(len); return p;
}
調用:char *a = TEST(獲取長度的其他函數);