sizeof函數功能:計算資料空間的位元組數 在32或者64位編譯器下所占位元組是不同的,具體如下:
1、32位編譯器:
32位系統下指針占用4位元組;
char
:1個位元組
char
*(即指針變量): 4個位元組(32位的尋址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)
short
int
: 2個位元組
int
:
4個位元組
unsigned
int
: 4個位元組
float
:
4個位元組
double
:
8個位元組
long
:
4個位元組
long
long
:
8個位元組
unsigned
long
:
4個位元組
2、64位編譯器:
64位系統下指針占用8位元組
char
:1個位元組
char
*
(即指針變量): 8個位元組
short
int
: 2個位元組
int
:
4個位元組
unsigned
int
: 4個位元組
float
:
4個位元組
double
:
8個位元組
long
:
8個位元組
long
long
:
8個位元組
unsigned
long
:
8個位元組
關于strlen()函數的使用說明 strlen()函數用來計算字元串的長度,其原型為:unsigned int strlen(char*s)
1、strlen()用來計算指定的字元串s的實際長度,不包括結束字元“\0”;
例1: char str[100]=“http://see.xidian.edu.cn./cpp/u/biaozhunku/”; 定義了一個大小為100的字元數組,但是僅有開始的43個字元被初始化了,剩下的都是0, sizeof(str)等于100 strlen(str)等于43. 但是需注意:如果字元的個數等于字元數組的大小,那麼strlen()的傳回值就無法确定了 例2: char str[6]="abcxyz"; strlen(str)的傳回值是不确定的。 strlen()函數計算的是字元串的實際長度,遇到第一個“\0”結束,如果隻對字元數組定義但沒有給他賦初值,這個結果是不定的,它會 從首位址一直找下去,直到遇到‘\0’停止。而sizeof()傳回的是變量申明後所占的記憶體數,不是實際長度,此外sizeof不是函數,僅僅是 一個操作符,strlen()是函數。 例