在C語言中sizeof和strlen的區別

2021-10-15 00:06:45 字數 766 閱讀 3647

sizeof是求某個儲存空間的大小,而strlen是求字串的長度,其中字串以\0結尾,但strlen長度不包含\0。

例如:char *ptr=「hello」;

char   arr[10]="hello";

1、對於strlen而言,對ptr和arr求長度的話值是一樣的,都是hello字串的長度為5。(strlen(ptr)=strlen(arr))

2、對於sizeof(ptr),因為ptr是指標,指標是用來儲存位址的,位址是多少位元組這是系統相關的。

如果系統是32位則位址是32位,即4個位元組。這時候sizeof求指標大小就是4;

如果系統是64位則位址是64位,即8個位元組。這時候sizeof求指標大小就是8; 

所以對於指標求大小,這個值一定是固定的。與他指向的那段記憶體單元無關。

而arr是乙個陣列,對arr求sizeof則是求這個陣列的大小**,在上面的語句中我們定義是char 型別包含10個元素的陣列,所以sizeof[arr]的大小就是 1*10 為10

總的來說就是:

1、對位址求sizeof,那它的大小就是4或者8,由系統決定了;如果是strlen的話,那就是真的求字串的長度了。

2、對於陣列形式存放的字串,sizeof 是求陣列的大小;而strlen是求陣列內儲存的字串的長度。

C語言中的sizeof和strlen

1 sizeof是算符,strlen是函式 2 sizeof可以用型別做引數,strlen只能用char 做引數,且必須是以 0 結尾的 3 大部分編譯程式,在編譯的時候就把sizeof計算過了,這是型別或是變數的長度這就是sizeof x 可以用來定義陣列維數的原因 4 strlen的結果要在執行...

c語言中的sizeof

一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...

C語言中的sizeof

一 sizeof是編譯器的內建指示符 不是函式 sizeof用於計算型別或變數所佔的記憶體大小 sizeof的值在編譯期就已經確定 sizeof用於型別 sizeof type sizeof用於變數 sizeof var 或 sizeof var int var 0 printf d n sizeo...