sizeof()是判斷乙個物件或者乙個型別所佔記憶體位元組數的操作符。
//32bit
int a;
int b=
sizeof(a)//4byte
sizeof(b)//陣列物件,計算陣列元素所佔的總長度 4byte*2= 8byte
char *p0;
sizeof(p0)//4 byte
char *p1="tencent";
sizeof(p1);//4 byte p1是指標,指標佔4位元組
char p2="tencent";
sizeof(p2);//8byte p2是陣列物件,計算陣列所有元素佔記憶體的總長度,字串的\0也算在內
struct data
;
在結構體會忽略char a[0]的大小,因為根本沒有分配記憶體。
sizeof(data) = 4;
如果不在結構體當中, char a[0]會報錯。
函式原型:size_t strlen(const char *string);
功能:它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域)開始掃瞄,直到碰到第乙個字串結束符』\0』為止,然後返回計數器值(長度不包含「\0」)。
char *p1 = "tencent";
strlen(p1);//7 byte,不包含\0
char p2="tencent";
strlen(p2);//7 byte
sizeof()計算傳入物件所佔記憶體的大小,而strlen()是從傳入物件處開始掃瞄直至第乙個等於』\0』處的計數截止。
對於字串型別來說:
1.傳入陣列型別,sizeof會計算陣列所有元素所佔記憶體的大小,
『\0』也計入在內。而傳入指標(指向字串)時,計算的是指標本身所在記憶體的大小。
2.對於strlen(),不管傳入陣列型別還是指標,只有內容相同,strlen()的結果都一樣。
sizeof和strlen和 countof的區別
運算子,計算引數所佔記憶體 int nnum2 strlen arr 是函式,求字元的個數,不包括 0 int nnum3 countof arr windows巨集 計算陣列的元素個數 cout nnum1 cout nnum2 cout nnum3 endl int arr1 20 nnum1 ...
sizeof和strlen的區別
sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...
strlen和sizeof的區別
sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...