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