零長度陣列大小是多少?
int
main()
編譯結果:
0
這玩意有什麼作用呢?
看下面的簡單例子
//宣告
typedef
struct testtest;
//定義
test *demo =
(test *
)malloc
(sizeof
(test)+10
);
再看乙個拓展demo:
#include
#include
#include
typedef
struct testtest;
typedef
struct test1test1;
intmain()
編譯結果:
1648
helloworld
helloworldadd str
0x209d030
0x209d034
helloworld
helloworldadd str
分析結果:
前兩個列印結果test的結構體大小是16,是因為兩個成員int a變數大小是4,char *b 變數是8,根據結構體內存對齊原則,按最多位元組看齊,所以是16。
test1的結構體大小是4,是因為int a變數大小是4,b[0]零陣列大小是0所以結構體test1記憶體為4。
結論:0陣列和指標效果都一樣的,都可以拓展字串的內容。只不過0陣列不佔記憶體更靈活一些
注意:64位機上,只是指標占用8位元組記憶體大小,int還是4位元組大小
C 陣列長度
初學c 到陣列的時候想手動寫一下迴圈輸出陣列內容的簡單迴圈,int arrayint 1,2,3,4,5 for size t i 0 i 結果發現輸出內容不對,i的值遠遠比size大,於是查資料了解一下sizeof是什麼作用 sizeof是乙個操作符 operator 其作用是返回乙個物件或型別所...
求陣列長度
c 求陣列長度為 int arr length sizeof arr sizeof arr 0 為了方便使用,在c語言中常定義巨集來求陣列長度 define arr len array,length 使用時,直接呼叫巨集函式即可,如 int arr int len arr len arr,len 此...
使用sizeof()計算陣列長度
char words 計算word中元素個數 size t words size sizeof words sizeof char 使用陣列初始化words2 指標初始化 list words2 words,words words size 解析 1 sizeof sizeof操作符返回乙個物件或型...