回覆列表
  • 1 # 道生一二三萬物

    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(獲取長度的其他函式);

  • 中秋節和大豐收的關聯?
  • 動畫人物你最喜歡誰?為什麼?