Linux c 零長陣列

2022-08-12 03:33:09 字數 1193 閱讀 9604

1、零長陣列

gnu c允許宣告長度為零的陣列,但它只能被用於結構體的最後乙個成員。

例項:

#include #include 

typedef

struct

postpos;

struct

line ;

int main(void

)

printf(

"sizeof(struct line) = %d\n

", sizeof(struct

line));

for (i = 0; i < thisline->length; i++)

return0;

}

輸出:sizeof(struct line) = 8

thisline->pos[0].lon = 121.175581

thisline->pos[0].lat = 31.567345

thisline->pos[1].lon = 120.175581

thisline->pos[1].lat = 32.567345

thisline->pos[2].lon = 119.175581

thisline->pos[2].lat = 33.567345

thisline->pos[3].lon = 118.175581

thisline->pos[3].lat = 34.567345

thisline->pos[4].lon = 117.175581

thisline->pos[4].lat = 35.567345

thisline->pos[5].lon = 116.175581

thisline->pos[5].lat = 36.567345

thisline->pos[6].lon = 115.175581

thisline->pos[6].lat = 37.567345

thisline->pos[7].lon = 114.175581

thisline->pos[7].lat = 38.567345

thisline->pos[8].lon = 113.175581

thisline->pos[8].lat = 39.567345

注意:在分配空間大小時,需要分配足夠的大小,否則結果可能為隨機資料;

跨平台使用時,不一定可移植

C語言的零長陣列

在標準 c 或者 c 中由於不支援 0 長度的陣列,所以 int array 0 這樣的定義是非法的。不過有些編譯器的擴充套件功能支援 0 長度的陣列。在 c 中,0 長度的陣列的主要用途是用來作為結構體的最後乙個成員,然後用它來訪問此結構體物件之後的一段記憶體 通常是動態分配的記憶體 由於其非標準...

C語言的零長陣列

在標準 c 或者 c 中由於不支援 0 長度的陣列,所以 int array 0 這樣的定義是非法的。不過有些編譯器的擴充套件功能支援 0 長度的陣列。在 c 中,0 長度的陣列的主要用途是用來作為結構體的最後乙個成員,然後用它來訪問此結構體物件之後的一段記憶體 通常是動態分配的記憶體 由於其非標準...

零長度陣列

零長度陣列 神奇的int reserve 0 include include struct device 構題 device 之後 這種宣告方法可以巧妙的實現c語 言裡的陣列擴充套件 int main a.out p dev reserve 0 100 p dev reserve 24 0 size...