c語言用sizeof求字節(jié)數(shù) 在C語言中用sizeof()測(cè)試數(shù)組或字符串大小的差異是什么?
在C語言中用sizeof()測(cè)試數(shù)組或字符串大小的差異是什么?1. 在回答這個(gè)問題之前,我們需要了解sizeof是什么。Sizeof是單目運(yùn)算符,用于獲取數(shù)組或其他數(shù)據(jù)類型的大小。大小以字節(jié)為單位,其
在C語言中用sizeof()測(cè)試數(shù)組或字符串大小的差異是什么?
1. 在回答這個(gè)問題之前,我們需要了解sizeof是什么。Sizeof是單目運(yùn)算符,用于獲取數(shù)組或其他數(shù)據(jù)類型的大小。大小以字節(jié)為單位,其返回類型為size 。尤其是,sizeof是編譯時(shí)運(yùn)算符,也就是說,它不會(huì)增加任何執(zhí)行時(shí)負(fù)擔(dān)。下面我們來看一個(gè)例子:
float array[20
]此時(shí),sizeof(array)將返回80,因?yàn)橐粋€(gè)float類型占用4個(gè)字節(jié),而數(shù)組有20個(gè)float,所以返回80
如果您想返回?cái)?shù)組的元素?cái)?shù),您可以這樣寫:
sizeof(array)/sizeof(array[0])
2當(dāng)我們使用sizeof獲取字符串大小時(shí),我們應(yīng)該特別注意以下示例:
如果我們定義以下變量:
char*STR1=“asdfgh”
char STR2[]=“asdfgh”
使用sizeof分別獲取STR1和STR2的大小時(shí),返回值不同:
sizeof(STR1),],返回值是4,因?yàn)镾TR1是指針。在32位計(jì)算機(jī)中,指針大小通常為4字節(jié),因此大小為4。
sizeof(STR2)。返回值是7,一個(gè)字符串。C語言默認(rèn)在尾部添加0,因此STR2數(shù)組有7個(gè)元素,即a、s、D、F、G、H、0
在C語言中,sizeof()不需要包含頭文件,因?yàn)閟izeof在C語言中實(shí)際上是一種單目運(yùn)算符,也是關(guān)鍵字之一,所以可以直接使用。在C語言中,sizeof()是一個(gè)用來判斷數(shù)據(jù)類型或表達(dá)式長(zhǎng)度的操作符。簡(jiǎn)而言之,它的功能是返回對(duì)象或類型占用的內(nèi)存字節(jié)數(shù)。Sizeof計(jì)算對(duì)象的大小,也轉(zhuǎn)換為計(jì)算對(duì)象類型。換句話說,同一類型的不同對(duì)象的sizeof值是一致的。Sizeof計(jì)算表達(dá)式。編譯器根據(jù)表達(dá)式的最終結(jié)果類型確定大小。通常,它不計(jì)算表達(dá)式。通常,在32位編譯環(huán)境中,sizeof(int)的值是4。strlen(char*)函數(shù)計(jì)算字符串的實(shí)際長(zhǎng)度,直到第一個(gè)“0”,然后返回計(jì)數(shù)值,不包括“0”。函數(shù)的作用是:返回聲明變量占用的內(nèi)存,而不是實(shí)際長(zhǎng)度。
2. 作為sizeof參數(shù)的數(shù)組不會(huì)退化。如果傳遞給strlen,它將退化為指針。
3. Sizeof可以使用type作為參數(shù),strlen只能使用char*作為參數(shù),并且必須以“”0 “”結(jié)尾。