1. 程式人生 > 其它 >sizeof運算子和strlen的區別

sizeof運算子和strlen的區別

技術標籤:C語言字串c語言sizeofstrlen

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;

strlen計算有效字元個數,’\0’前有8個字元,所以返回8.

執行結果:
在這裡插入圖片描述