sizeof 與strlen的區別

2021-08-18 18:05:44 字數 1183 閱讀 1239

strlen與sizeof的區別:

sizeof是乙個運算子,用來計算資料型別的大小;

strlen是計算字串有效長度的。

srlen能夠計算字串的長度,但是不可以計算字元陣列的長度。例如:

char ch1 = "123456";

char ch2 = ;

int value1 = strlen(ch1);

int value2 = strlen(ch2);

printf("%d  %d\n",value1,value2);//

列印長度分別為6和18。明顯18並不是ch2的長度。

strlen不能計算數字陣列的長度,

數字陣列的長度需要用sizeof(a)/sizeof(a[0])來計算。例如:

int a = ;

int value3 = strlen(a);

printf("%d\n",value3);//無論如何改變陣列a內數字的個數,value3的值為隨機數。

函式的呼叫中,例如:

void test(char* ch)

int main() 

//最後列印結果為6。

sizeof用與計算資料型別的大小,可以計算一切資料型別。例如

char ch1 = "123456";

char ch2 = ;

int a[100] ;

int value1 = sizeof(ch1);

int value2 = sizeof(ch2);

int value3 = sizeof(a);

printf("%d  %d\n",value1,value2);

printf("%d\n",value3);//列印結果分別為7、4、400

函式呼叫中,例如:

void test(char* ch)

int main() 

//列印結果為4,因為傳給子函式的引數其實是乙個char*的位址。而strlen可以正常使用是因為strlen()要求傳遞的就是乙個char*型別的位址。

同理void test(int* ch)

int main() 

test(ch);

}//列印結果依然為4。所以,在子函式中,也不能夠使用sizeof(a)/sizeof(a[0])來計算

陣列a的長度,若要用到a的長度,需要重新傳遞乙個引數給子函式。

sizeof求位元組以及與strlen的區別

例子一 根據以下條件進行計算 1 結構體的大小等於結構體內最大成員大小的整數倍 2 結構體內的成員的首位址相對於結構體首位址的偏移量是其型別大小的整數倍,比如說double型成員相對於結構體的首位址的位址 偏移量應該是8的倍數。include include using namespace std ...

C語言中的strlen與sizeof的區別

sizeof與strlen是有著本質的區別,sizeof是求資料型別所佔的空間大小,而strlen是求字串的長度,字串以 0結尾。區別如下 1 sizeof是乙個c語言中的乙個單目運算子,而strlen是乙個函式,用來計算字串的長度。2 sizeof求的是資料型別所佔空間的大小,而strlen是求字...

C語言中的strlen與sizeof的區別

sizeof與strlen是有著本質的區別,sizeof是求資料型別所佔的空間大小,而strlen是求字串的長度,字串以 0結尾。區別如下 1 sizeof是乙個c語言中的乙個單目運算子,而strlen是乙個函式,用來計算字串的長度。2 sizeof求的是資料型別所佔空間的大小,而strlen是求字...