天天看點

sizeof函數和strlen()函數

 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()是函數。 例

繼續閱讀