C語言建立柔性陣列

2021-06-18 14:38:01 字數 399 閱讀 8016

typedef struct 

softarray;

softarray* create_soft_array(int size)

return ret;}

q:   ret 為null,訪問ret->array為什麼沒有導致程式奔潰呢

這裡沒有訪問ret->array(即沒要它的位址),只是要了array的型別。 ret為softarray * 型別

在編譯的時候  管它ret是不是null。  在sizeof裡面  只取它的型別就ok。(

sizeof不會訪問,只是確定資料型別)

//sizeof(*ret)在編譯階段就確定,為結構體softarray大小

*(ret->array)為結構體中array陣列型別大小,若為int型,則為4位元組

C語言 柔性陣列

柔性陣列 flexible array 也叫伸縮性陣列,其實就是變長陣列,反映了c語言對精煉 的極致追求。這種 結構產生於對動態結構體的需求。比如我們需要在結構體中存放乙個動態長度的字串,這時候,柔性陣列可以大顯身手了。c99使用不完整型別來實現柔性陣列,標準形式如下 struct mystruct...

C語言柔性陣列

1 柔性陣列 c語言中結構體的最後乙個元素可以是大小未知的陣列 c語言中可以由結構體產生柔性陣列 typedef struct soft array softarray 可以試試,printf d sizeof softarray 列印出它的sizeof 大小 結果是4,也就是說array這個未知長...

C語言柔性陣列和動態陣列

前言 經常看到c語言裡的兩個陣列,總結一下。參考 includetypedef struct softarraysoftarray 我們可以看出,softarray結構體的大小是4,顯然,在32位作業系統下乙個int型變數大小剛好為4,也就說結構體中的陣列沒有占用記憶體。為什麼會沒有占用記憶體,我們...