sizeof運算子和strlen的區別
阿新 • • 發佈:2021-01-16
sizeof運算子返回一個物件或者型別所佔的記憶體位元組數,
strlen 返回的是字串或字元陣列有效元素的個數;
但計算字串時,sizeof運算子會將字串結束標誌計算在內,
而strlen 只是返回有效元素的個數,即’\0’前字元的個數。
例子如下:
#include<stdio.h>
#include<string.h>
int main()
{
char b[] = { 'a', 'b', 'c', 'd' };
printf("sizeof(b)=%d\n", sizeof(b)) ;
printf("strlen(b)=%d\n", strlen(b));
char b1[] = { 'a', 'b', 'c', 'd' ,'\0'};
printf("sizeof(b1)=%d\n", sizeof(b1));
printf("strlen(b1)=%d\n", strlen(b1));
char b2[] = "IT crowd";
printf("sizeof(b2)=%d\n", sizeof(b2));
printf("strlen(b2)=%d\n" , strlen(b2));
return 0;
}
分析:
字元陣列b存放四個字元,
sizeof計算記憶體大小,四個字元就佔四個位元組,返回4;
strlen計算有效字元個數,它將字串結束標誌’\0’前的所有字元視為有效字元,b中無 ‘\0’,不確定在何處結束,所以返回一個隨機數。
字元陣列b1比b多了一個字串結束標誌’\0’,
sizeof計算記憶體大小,五個字元就佔五個位元組,返回5;
strlen計算有效字元個數,’\0’前有四個字元,所以返回4.
字串b2中有八個字元,字串末尾自動會加上一個字串結束標誌’\0’,共計九個字元。
sizeof計算記憶體大小,九個字元就佔九個位元組,返回9;
執行結果: