C說話中的sizeof操作符用法及和strlen的差別。本站提示廣大學習愛好者:(C說話中的sizeof操作符用法及和strlen的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中的sizeof操作符用法及和strlen的差別正文
1、 界說:
sizeof是C/C++中的一個操作符(operator),簡略的說其感化就是前往一個對象或許類型所占的內存字節數。其前往值類型為size_t,在頭文件stddef.h中界說。在32位體系中:
char的sizeof值為1,char是我們編程能用的最小數據類型。
short的sizeof值為2;
int、float、long為4;
double為8;
一切的指針的sizeof值都為4。
2、語法:
sizeof有三種語法情勢,以下:
1) sizeof( object ); // sizeof( 對象 );
2) sizeof( type_name ); // sizeof( 類型 );
) sizeof object; // sizeof 對象;
sizeof( 2 ); // 2的類型為int,所以等價於 sizeof( int );
sizeof( 2 +3.14); // 3.14的類型為double,2也會被晉升成double類型,所以等價於 sizeof( double );
3、舉例解釋:
char* ss = "0123456789"; sizeof(ss) 成果 4 ===》ss是指向字符串常量的字符指針 sizeof(*ss) 成果 1 ===》*ss是第一個字符 char ss[] = "0123456789"; sizeof(ss) 成果 11 ===》ss是數組,盤算到\0地位,是以是10+1 sizeof(*ss) 成果 1 ===》*ss是第一個字符 char ss[100] = "0123456789"; sizeof(ss) 成果是100 ===》ss表現在內存中的年夜小 100×1 strlen(ss) 成果是10 ===》strlen是個函數外部完成是用一個輪回盤算到\0為止之前 int ss[100] = "0123456789"; sizeof(ss) 成果 400 ===》ss表現再內存中的年夜小 100×4 strlen(ss) 毛病 ===》strlen的參數只能是char* 且必需是以''\0''開頭的 char q[]="abc"; char p[]="a\n"; sizeof(q),sizeof(p),strlen(q),strlen(p); 成果是 4 3 3 2
4、sizeof與strlen的差別:
1.sizeof是算符,strlen是函數。數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,如: fun(char [8])、fun(char []),都等價於 fun(char *) ,所以數組做sizeof的參數不退步,傳遞給strlen就退步為指針了。
2.sizeof可以用類型做參數,strlen只能用char*做參數,且必需是以''\0''開頭的。sizeof還可以用函數做參數,好比: short f(); printf("%d\n", sizeof(f()));輸入的成果是sizeof(short),即2。
3.年夜部門編譯法式 在編譯的時刻就把sizeof盤算過了 是類型或是變量的長度這就是sizeof(x)可以用來界說數組維數的緣由,strlen的成果要在運轉的時刻能力盤算出來,是用來盤算字符串的長度,不是類型占內存的年夜小。
char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20;
4.當實用了於一個構造類型時或變量, sizeof 前往現實的年夜小, 當實用一靜態地空間數組, sizeof 清償全體數組的尺寸。 sizeof 操作符不克不及前往靜態地被分配了的數組或內部的數組的尺寸 。