c語(yǔ)言i++和++i C語(yǔ)言中strlen與sizeof的區(qū)別是什么?
C語(yǔ)言中strlen與sizeof的區(qū)別是什么?strlen和sizeof之間的具體區(qū)別如下:1。Strlen是C語(yǔ)言庫(kù)函數(shù)之一;sizeof是運(yùn)算符,也是C語(yǔ)言關(guān)鍵字之一。2. strlen函數(shù)用于
C語(yǔ)言中strlen與sizeof的區(qū)別是什么?
strlen和sizeof之間的具體區(qū)別如下:
1。Strlen是C語(yǔ)言庫(kù)函數(shù)之一;sizeof是運(yùn)算符,也是C語(yǔ)言關(guān)鍵字之一。
2. strlen函數(shù)用于計(jì)算字符串長(zhǎng)度,參數(shù)為char*type。聲明為
int strlen(const char*s)
計(jì)算從s到字符串“0”結(jié)尾的所有元素的數(shù)目,不包括0。
操作對(duì)象的大小可以是任何變量或類型,計(jì)算結(jié)果是變量或類型占用的實(shí)際長(zhǎng)度(內(nèi)存字節(jié)數(shù))。
3. Strlen是一個(gè)函數(shù),其后續(xù)參數(shù)必須在括號(hào)中;
sizeof在計(jì)算變量占用的字節(jié)數(shù)時(shí)可以使用括號(hào),也可以不使用括號(hào),但在計(jì)算數(shù)據(jù)類型占用的字節(jié)數(shù)時(shí)必須使用。
4. 以字符串為例,說明了它們之間的區(qū)別:
(1)將char s[10]=“ABCD”
strlen(s)定義為字符串的長(zhǎng)度,即實(shí)際字符數(shù)。結(jié)果是4。
sizeof(s)是數(shù)組的大小,值是10。
(2)define char*s=“ABCD”
strlen(s)和strlen(“ABCD”)相同,都是4。
Sizeof(s)是指針占用的空間,它取決于機(jī)器字的長(zhǎng)度。在32位計(jì)算機(jī)中,值為4。
sizeof(“ABCD”)是字符串的實(shí)際內(nèi)存大小,包括“0”,值為5。
C語(yǔ)言中要使用sizeof()應(yīng)包含那個(gè)頭文件?
在C語(yǔ)言中,使用sizeof()不需要包含頭文件,因?yàn)閟izeof在C語(yǔ)言中實(shí)際上是一種單目運(yùn)算符,也是關(guān)鍵字之一,所以可以直接使用。在C語(yǔ)言中,sizeof()是一個(gè)用來(lái)判斷數(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é)尾。