sizeof和strlen本質區別
阿新 • • 發佈:2022-03-24
sizeof定義
sizeof 運算子。表示式 sizeof(type) 得到某個型別或某個變數在特定平臺上的準確儲存大小,返回值unsigned int 型別
strlen定義
strlen是個函式,函式原型:size_t strlen(const char *str),用來計算字串的實際長度(不包括‘\0'在內),函式的返回值size_t 為unsigned int 型別,
例子:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define PI 3.14159265 const intb = 50000; int main(void) { char a[] = "hello world"; int *c ="asfdgh"; unsigned int d = sizeof(c); printf("%ld,%ld,%ld,%ld",sizeof(c),strlen(c),sizeof(a),strlen(a)); return 0; }
執行結果:
8 6 12 11
int * 在64位作業系統記憶體空間是8byte,所以sizeof(a)=8
總結:
字串在計算機記憶體中儲存時,系統會自動新增一個‘/0'作為字串結束符,sizeof 計算結果包括’\0'在內,而strlen 計算結果遇到‘/0'就結束,計算的結果不包括’/0';