2 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
1、操作
strlen(char*)函數(shù)求的是字符串的實(shí)際長(zhǎng)度,它求得方法是從開(kāi)始到遇到第一個(gè)'\0',如果你只定義沒(méi)有給它賦初值,這個(gè)結(jié)果是不定的,它會(huì)從aa首地址一直找下去,直到遇到'\0'停止。
而sizeof()返回的是變量聲明后所占的內(nèi)存數(shù),不是實(shí)際長(zhǎng)度。
2、參數(shù)類(lèi)型
sizeof可以用類(lèi)型做參數(shù),strlen只能用char*做參數(shù),且必須是以''\0''結(jié)尾的。
3、類(lèi)型
sizeof是操作符(關(guān)鍵字),strlen是函數(shù)。
擴(kuò)展資料
strlen函數(shù)原型:
size_t strlen(const char *string)
size_t 是無(wú)符號(hào)整數(shù)的別名,在vs2008編譯器中可以查看其宏定義。
功能:
其功能是獲取字符串的長(zhǎng)度。
返回值:
在MSDN文檔中查看strlen函數(shù)的返回值,敘述如下。
Each of these functions returns the number of characters in string, excluding the terminal NULL. No return value is reserved to indicate an error.
每個(gè)函數(shù)都返回字符串中的字符數(shù),不包括終端NULL。不保留返回值以指示錯(cuò)誤。
參數(shù):
Null-terminated string
空終止字符串, 字符串標(biāo)準(zhǔn)庫(kù)提供的頭文件中包含操作以空字符結(jié)尾的字符串(null-terminated string)的函數(shù)。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
1、用法不一樣
sizeof可以用類(lèi)型做參數(shù)。
strlen只能用char*做參數(shù),且必須是以''\0''結(jié)尾的。sizeof還可以用函數(shù)做參數(shù),比如:
short f();
printf("%d\n", sizeof(f()));
輸出的結(jié)果是sizeof(short),即2。
2、功能不一樣
sizeof的功能能是,獲得保證,能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。
strlen的功能是返回字符串的長(zhǎng)度,該字符串可能是自己定義的,也可能是內(nèi)存中隨機(jī)的,該函數(shù)實(shí)際完成的功能是從代表該字符串的第一個(gè)地址開(kāi)始遍歷,直到遇到結(jié)束符NULL。返回的長(zhǎng)度大小不包括NULL。
3、意思不一樣
sizeof(...)是運(yùn)算符,在頭文件中typedef為unsigned int,其值在編譯時(shí)即計(jì)算好了,參數(shù)可以是數(shù)組、指針、類(lèi)型、對(duì)象、函數(shù)等。
strlen(...)是函數(shù),要在運(yùn)行時(shí)才能計(jì)算。參數(shù)必須是字符型指針(char*)。當(dāng)數(shù)組名作為參數(shù)傳入時(shí),實(shí)際上數(shù)組就退化成指針了。
- 2 回答
- 0 關(guān)注
- 282 瀏覽
添加回答
舉報(bào)