經典的sizeof和strlen

2021-06-25 17:37:17 字數 745 閱讀 7962

#include #include using namespace std;

int main()

;    char c = ;

char * p;

p =a;

cout << "sizeof(a) = " <

sizeof()是乙個操作符,其引數可以是資料的型別,也可以是變數。編譯器在編譯的時候就算出了sizeof的結果,該操作符返回變數或型別(包括集合型別,如陣列,結構體)儲存空間的大小。

strlen()是乙個標準庫函式,其引數只能是'\0'結束的字串(如果不是'\0'結束的字串呢?)。

現在來看上面的程式,先給出輸出結果:

sizeof(a)和strlen(a)的結果很好理解。sizeof(b)和sizeof(c)的結果也可以理解,為什麼strlen(b),strlen(c)的長度分別為7和9呢?。這是因為字元陣列b和c的字元裡面沒有'\0'。程式編譯的時候函式的區域性變數放在記憶體的棧區,在棧裡面上面程式裡的字元存放的形式是cdabhello\0,因此才會輸出7和9。對於sizeof(p),p是乙個指標,不管是char型的還是void型的,資料都是4.陣列做

sizeof

的引數不退化,傳遞給

strlen

就退化為指標了。

關於C語言sizeof運算子和strlen 函式

c primer plus總結 1.不同點 sizeof運算子是以位元組為單位返回運算子物件的大小 strlen 函式給出字串中的字元長度 2.相同點 sizeof運算子和strlen 函式返回型別可以用 zd轉換 不識別 zd,嘗試換成 u或者 lu sizeof運算子和strlen 函式返回的實...

sizeof和strlen 比較經典

下面是網上的乙個比較經典的例子,分析一下 char c abcdef char d abcdef char e printf d d n sizeof c strlen c printf d d n sizeof d strlen d printf d d n sizeof e strlen e 輸...

sizeof和strlen, length的區別

一 sizeof sizeof 是運算子,而不是乙個函式。乙個簡單的例子 int a cout 在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列 指標 型別 物件 函式等。它的功能是 獲得保證能容納實現所建立的最大物件的位元組大小。由於在編譯時計算,因此s...