sizeof和strlen的區別
strlen計算字串的長度
,以'\0'為字串結束標誌
sizeof是分配的陣列實際所佔的記憶體空間大小
,不受裡面儲存內容
例如 :
char *str = "1111111abcd";
char str1[9] = ;
sizeof(str) = 4; //是指指標所佔的位元組大小,在c/c++中乙個指標佔4個位元組(32位系統)
sizeof(str1) = 9;
sizeof()是運算子,由於在編譯時計算,因此sizeof不能用來返回動態分配的記憶體空間的大小。實際上,用sizeof來返回型別以及靜態分配的物件、結構或陣列的空間,返回值跟這些裡面所儲存的內容沒有關係。
具體而言,當引數分別如下時,sizeof返回的值含義如下:
陣列-編譯時分配的陣列空間大小
指標-儲存該指標所用的空間大小
型別-該型別所佔的空間的大小
物件-物件的實際占用空間大小
函式-函式返回型別所佔空間的大小
strlen()是函式,可以計算字串的長度,直到遇到結束符null才結束,返回的長度大小不包含null
小技巧: 如何計算陣列中元素的個數?
int a[3];
元素個數為:陣列的總大小/乙個型別的大小
sizeof(a)/sizeof(a[0]);
關於C語言sizeof運算子和strlen 函式
c primer plus總結 1.不同點 sizeof運算子是以位元組為單位返回運算子物件的大小 strlen 函式給出字串中的字元長度 2.相同點 sizeof運算子和strlen 函式返回型別可以用 zd轉換 不識別 zd,嘗試換成 u或者 lu sizeof運算子和strlen 函式返回的實...
C語言的sizeof和strlen
strlen是函式,而sizeof是算符。strlen需要進行一次函式呼叫,而對於sizeof而言,因為緩衝區已經用已知字串進行了初始化,其長度是固定的,所以sizeof在編譯時計算緩衝區的長度。strlen是遇到0或者 0 都會停止運算的,而sizeof是每個字元都會算的,不會漏掉0 或者 0 因...
C語言的sizeof和strlen
strlen是函式,而sizeof是算符。strlen需要進行一次函式呼叫,而對於sizeof而言,因為緩衝區已經用已知字串進行了初始化,起長度是固定的,所以sizeof在編譯時計算緩衝區的長度。因為sizeof 測試的是陣列的長度。而strlen測試的是字串的長度。在定義陣列時,字串後面還有乙個結...