零陣列長度的使用

2021-10-10 08:50:50 字數 915 閱讀 2814

零長度陣列大小是多少?

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操作符返回乙個物件或型...