c語言sizeof和strlen的區(qū)別 C中,字符串的長度和占用的存儲(chǔ)字節(jié)有什么區(qū)別?
C中,字符串的長度和占用的存儲(chǔ)字節(jié)有什么區(qū)別?長度是字符串中的字符數(shù)。例如,char*P=“1234”,那么P中的字符數(shù)是4,4是其長度。它也可以理解為strlen和wcslen對(duì)字符串的返回值。占用
C中,字符串的長度和占用的存儲(chǔ)字節(jié)有什么區(qū)別?
長度是字符串中的字符數(shù)。例如,char*P=“1234”,那么P中的字符數(shù)是4,4是其長度。它也可以理解為strlen和wcslen對(duì)字符串的返回值。占用的存儲(chǔ)字節(jié)表示內(nèi)存中的字符串或上面的字符串占用的存儲(chǔ)空間。占用的存儲(chǔ)空間是5,包括一個(gè)空字節(jié),因此占用的字節(jié)數(shù)是5。因此,C樣式ASCII字符串的長度和字符數(shù)是不同的。除了C樣式的字符串(以空字節(jié)結(jié)尾的字符串),其他ASCII字符串具有相同的長度和存儲(chǔ)空間。例如,STL中字符串的內(nèi)存空間與字符的長度相同,因?yàn)樗皇褂每兆址麃順?biāo)識(shí)字符串的結(jié)尾。因此對(duì)于ASCII字符串,長度和字節(jié)數(shù)可能是相同的。對(duì)于寬字符wcharut或Unicode,字符的長度必須與字節(jié)數(shù)不同。wcharut s[]=l“1234”sizeof(s)為10,wcslen(s)為4。很簡單,這兩個(gè)概念也可以理解為sizeof和strlen或wcslen返回的長度。
strlen與sizeof()的區(qū)別?
1. 打開vs2017并創(chuàng)建一個(gè)C控制臺(tái)應(yīng)用程序。
2. 首先,功能不同。Sizeof()是一個(gè)運(yùn)算符,用于計(jì)算任何類型的參數(shù)所占用的內(nèi)存量。
3. Strlen()是一個(gè)函數(shù),用于計(jì)算以“0”結(jié)尾的字符串的長度,不包括“0”。
4. 其次,參數(shù)不同。當(dāng)字符數(shù)組用作sizeof()的參數(shù)時(shí),計(jì)算字符數(shù)組占用的內(nèi)存。
5. 當(dāng)字符數(shù)組用作strlen()的參數(shù)時(shí),字符數(shù)組將轉(zhuǎn)換為char*。
C語言中strlen與sizeof的區(qū)別是什么?
strlen和sizeof之間的具體區(qū)別如下:
1。Strlen是C語言庫函數(shù)之一;sizeof是運(yùn)算符,也是C語言關(guān)鍵字之一。
2. strlen函數(shù)用于計(jì)算字符串長度,參數(shù)為char*type。聲明為
int strlen(const char*s)
計(jì)算從s到字符串“0”結(jié)尾的所有元素的數(shù)目,不包括0。
操作對(duì)象的大小可以是任何變量或類型,計(jì)算結(jié)果是變量或類型占用的實(shí)際長度(內(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)定義為字符串的長度,即實(shí)際字符數(shù)。結(jié)果是4。
sizeof(s)是數(shù)組的大小,值是10。
(2)define char*s=“ABCD”
strlen(s)和strlen(“ABCD”)相同,都是4。
Sizeof(s)是指針占用的空間,它取決于機(jī)器字的長度。在32位計(jì)算機(jī)中,值為4。
sizeof(“ABCD”)是字符串的實(shí)際內(nèi)存大小,包括“0”,值為5。