C++中strlen(),sizeof()與size()的區(qū)別
一、簡(jiǎn)述
有沒(méi)有初學(xué) C++ 的小白和我一樣,對(duì)這幾個(gè)的區(qū)別迷迷糊糊的,傻傻分不清。為了正確掌握其使用方法,我在做完下面這道題目后,決定做一個(gè)小結(jié)。
二、詳細(xì)介紹
1. strlen()
返回字符串中的字符個(gè)數(shù)。其格式為 strlen(const char * Str),由此可見(jiàn),其接受一個(gè) char * 參數(shù)。其過(guò)程是從字符串的頭開(kāi)始,一直到遇到第一個(gè)空字符 ‘\0’ ,且不把空字符計(jì)算在內(nèi)。
2. sizeof()
計(jì)算所占字節(jié)數(shù)。這是一個(gè)運(yùn)算符,括號(hào)中可以是數(shù)組,類(lèi)型,對(duì)象等。
以一個(gè)指針為例:
#include<iostream> using namespace std; int main() { ?? ?double pi = 3.14; ?? ?double* pt = π ?? ?cout << "sizeof(pt) = " << sizeof(pt); ?? ?cout << ", sizeof(*pt) = " << sizeof(*pt) << endl; ?? ?return 0; }
pt 是一個(gè)指針,而 *pt 是指針 pt 所指向的 double 類(lèi)型的數(shù) 3.14,二者是不一樣的。運(yùn)行上述代碼后,結(jié)果如下:
sizeof(pt) = 4, sizeof(*pt) = 8
說(shuō)明指針占用 4 個(gè)字節(jié),而 double 占用 8 個(gè)字節(jié)。
3. size()
返回字符串中的字符個(gè)數(shù)。其格式為 string_Name.size(),在使用 string 對(duì)象時(shí)使用。其過(guò)程是從字符串的頭開(kāi)始,一直到遇到第一個(gè)空字符 ‘\0’ ,且不把空字符計(jì)算在內(nèi)。
三、題目
/* 編寫(xiě)一個(gè)程序,讓用戶(hù)輸入三次 40 碼跑的成績(jī)(如果您愿意,也可以讓用戶(hù)輸入 40 米跑的成績(jī)), 并顯示次數(shù)和平均成績(jī)。請(qǐng)使用一個(gè) array 對(duì)象來(lái)存儲(chǔ)數(shù)據(jù)(如果編譯器不支持 array 類(lèi),請(qǐng)使用數(shù)組) */
四、代碼
#include<iostream> #include<array> #include<string> using namespace std; int main() { ?? ?array<double, 3> grade; ?? ?string string_animal = "cat"; ?? ? ?? ?cout << "1st: "; ?? ?cin >> grade[0]; ?? ?cout << "2nd: "; ?? ?cin >> grade[1]; ?? ?cout << "3th: "; ?? ?cin >> grade[2]; ?? ?double time = (grade[0] + grade[1] + grade[2]) / 3; ?? ?cout << "The number is " << sizeof(grade)/sizeof(grade[0]) << ", and grade is " << time << endl; ?? ?cout << "The number of string_animal is " << string_animal.size() << endl; ?? ?return 0; }
到此這篇關(guān)于C++中strlen(),sizeof()與size()的區(qū)別的文章就介紹到這了,更多相關(guān)C++ strlen(),sizeof()與size()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c++中關(guān)于int、long、long?long等取值范圍
這篇文章主要介紹了c++中關(guān)于int、long、long?long等取值范圍,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02C語(yǔ)言中g(shù)etchar(?)?函數(shù)使用詳解
getchar()?字符輸入函數(shù),沒(méi)有參數(shù),從輸入緩沖區(qū)里面讀取一個(gè)字,需要注意一次只能讀取一個(gè)字符,這篇文章主要介紹了C語(yǔ)言中g(shù)etchar函數(shù)使用詳解,需要的朋友可以參考下2022-12-12C++實(shí)現(xiàn)簡(jiǎn)單的生產(chǎn)者-消費(fèi)者隊(duì)列詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的生產(chǎn)者-消費(fèi)者隊(duì)列,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04C++采用TLS線(xiàn)程局部存儲(chǔ)的用法實(shí)例
這篇文章主要介紹了C++采用TLS線(xiàn)程局部存儲(chǔ)的用法實(shí)例,詳細(xì)講述了TLS索引及線(xiàn)程的操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10QT5多窗口跳轉(zhuǎn)實(shí)現(xiàn)步驟詳解
這篇文章主要介紹了使用Qt5實(shí)現(xiàn)多窗口界面跳轉(zhuǎn)的過(guò)程,包括創(chuàng)建多個(gè)UI界面、設(shè)計(jì)按鈕連接槽函數(shù)以及實(shí)現(xiàn)界面之間的導(dǎo)航,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12C語(yǔ)言實(shí)現(xiàn)BMP圖像處理(彩色圖轉(zhuǎn)灰度圖)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)BMP圖像處理,彩色圖轉(zhuǎn)灰度圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10C語(yǔ)言數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解
本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中數(shù)據(jù)在內(nèi)存中存儲(chǔ)解析,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09