Sizeof和Strlen的戰爭

2021-10-03 11:32:55 字數 1164 閱讀 2236

在這裡插入**片
#include

#include

#include

int main()

;printf("%d\n", strlen(arr)); //ub

printf("%d\n", strlen(arr + 0)); //ub

printf("%d\n", strlen(*arr));

printf("%d\n", strlen(arr[1]));

char arr = 「abcdef」;

printf("%d\n", sizeof(arr));

printf("%d\n", sizeof(arr + 0));

printf("%d\n", sizeof(*arr));

printf("%d\n", sizeof(arr[1]));

printf("%d\n", sizeof(&arr)); /

printf("%d\n", sizeof(&arr + 1));

printf("%d\n", sizeof(&arr[0] + 1));

printf("%d\n", strlen(arr));

printf("%d\n", strlen(arr + 0));

printf("%d\n", strlen(*arr)); //ub

printf("%d\n", strlen(arr[1])); //ub

這裡是引用

sizeof是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列、指標、型別、物件、函式等。

2、它的功能是:獲得保證能容納實現所建立的最大物件的位元組大小。具體而言,當引數分別如下時,sizeof返回的值表示的含義如下:陣列——編譯時分配的陣列空間大小;指標——儲存該指標所用的空間大小(儲存該指標的位址的長度,是長整型,應該為4)。

二、語法不同

1、strlen是函式,要在執行時才能計算。引數必須是字元型指標。當陣列名作為引數傳入時,實際上陣列就退化成指標了。

2、它的功能是:返回字串的長度。該字串可能是自己定義的,也可能是記憶體中隨機的,該函式實際完成的功能是從代表該字串的第乙個位址開始遍歷,直到遇到結束符null。返回的長度大小不包括null。

sizeof和strlen的區別

sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...

strlen和sizeof的區別

sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...

sizeof和strlen的區別

sizeof和strlen都可以用來求變數的長度,但兩者之間還是有很大的區別的。首先,從2個例子講起 例1 charss 100 0123456789 sizeof ss 結果為100 ss表示在記憶體中預分配的大小,100 1 strlent ss 結果為10 它的內部實現是用乙個迴圈計算字串的長...