C語(yǔ)言中關(guān)于sizeof 和 strlen的區(qū)別分析
1、編譯時(shí)計(jì)算運(yùn)算符sizeof,可用類(lèi)型或變量做參數(shù),計(jì)算占用內(nèi)存的大小。sizeof后若是類(lèi)型必須加括弧,若是變量名可不加括弧。sizeof(x)可用來(lái)定義數(shù)組維數(shù)如:
printf("%d\n", sizeof(short));
輸出的結(jié)果為短整型的長(zhǎng)度2。用結(jié)構(gòu)類(lèi)型或變量做參數(shù)時(shí),sizeof 返回實(shí)際的大小,當(dāng)用于靜態(tài)數(shù)組時(shí),sizeof 返回全部數(shù)組的尺寸。sizeof 操作符不能返回動(dòng)態(tài)地被分派了的數(shù)組或外部的數(shù)組的尺寸
2、運(yùn)行時(shí)計(jì)算strlen,只能用char*做參數(shù),且必須是以''\0''結(jié)尾的。計(jì)算的是字符串的長(zhǎng)度。如:
char str[20]="0123456789";
int a=strlen(str); // 結(jié)果為a=10
int b=sizeof(str); // 結(jié)果b=20;
3、處理靜態(tài)數(shù)組:
char str[20]="0123456789";
int a=strlen(str); // a=10; strlen 計(jì)算字符串的長(zhǎng)度,以\0'為字符串結(jié)束標(biāo)記。
int b=sizeof(str); // b=20; sizeof 計(jì)算的則是分配的數(shù)組str[20] 所占的內(nèi)存空間的大小,不受里面存儲(chǔ)的內(nèi)容影響。
4、處理指針:
char* ss = "0123456789";
sizeof(ss) // 結(jié)果4,
ss是指向字符串常量的字符指針,sizeof 獲得的是一個(gè)指針?biāo)嫉目臻g。sizeof(*ss) 結(jié)果1,*ss是第一個(gè)字符 其實(shí)就是獲得了字符串的第一位'0' 所占的內(nèi)存空間,是char類(lèi)型的,占用1字節(jié)。strlen(ss)= 10,若要獲得這個(gè)字符串的長(zhǎng)度,則一定要使用 strlen
以上所述就是關(guān)于sizeof 和 strlen區(qū)別的全部?jī)?nèi)容了,希望大家能夠喜歡
- C語(yǔ)言sizeof和strlen區(qū)別小結(jié)
- C語(yǔ)言中sizeof和strlen的區(qū)別詳解
- C語(yǔ)言中的strlen()和sizeof()對(duì)比分析
- C語(yǔ)言之sizeof與strlen的使用及區(qū)別
- 淺談C語(yǔ)言中的sizeof()和strlen()的區(qū)別
- 關(guān)于C語(yǔ)言strlen與sizeof區(qū)別詳情
- C語(yǔ)言入門(mén)篇--sizeof與strlen基礎(chǔ)理論
- C語(yǔ)言中sizeof()與strlen()的區(qū)別詳解
- C語(yǔ)言中sizeof()與strlen()函數(shù)的使用入門(mén)及對(duì)比
- C語(yǔ)言中sizeof 和 strlen的區(qū)別
相關(guān)文章
C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng)
這篇文章主要為大家介紹了C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04C語(yǔ)言中單鏈表(不帶頭結(jié)點(diǎn))基本操作的實(shí)現(xiàn)詳解
鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文主要和大家聊聊C語(yǔ)言中單鏈表(不帶頭結(jié)點(diǎn))的基本操作,感興趣的小伙伴可以了解一下2022-11-11使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊的方法
這篇文章主要介紹了?使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶(hù)端代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12C++實(shí)現(xiàn)讀寫(xiě)文件的示例代碼
這篇文章主要介紹了C++實(shí)現(xiàn)讀寫(xiě)文件的示例代碼,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下2020-08-08C++11 移動(dòng)構(gòu)造函數(shù)的使用
本文主要介紹了C++11 移動(dòng)構(gòu)造函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C++ Clock類(lèi)模擬實(shí)現(xiàn)鬧鐘運(yùn)行
這篇文章主要為大家詳細(xì)介紹了C++ Clock類(lèi)模擬實(shí)現(xiàn)鬧鐘運(yùn)行,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vscode遠(yuǎn)程連接服務(wù)器(免密登錄+遠(yuǎn)程開(kāi)發(fā))
vscode的遠(yuǎn)程連接功能十分方便,本文就來(lái)介紹一下vscode遠(yuǎn)程連接服務(wù)器,主要包括免密登錄和遠(yuǎn)程開(kāi)發(fā),感興趣的可以了解一下2024-07-07