sizeof,strlen總結比較

2021-05-24 00:50:40 字數 842 閱讀 2710

其實理解   sizeof   只需要抓住乙個要點:棧

程式儲存分布有三個區域:棧、靜態和動態。所有能夠從**直接操作的物件,包括任何型別的變數、指標,都是在棧上的;動態和靜態儲存區是靠棧上的指標間接操作的。   sizeof   操作符,計算的是物件在棧上的投影體積;記住這個就很多東西都很清楚了。

char   const   *   static_string   =   "hello ";

sizeof(static_string)   是   sizeof   乙個指標,所以在   32bit   system   是   4

char   stack_string   =   "hello ";

sizeof(stack_string)   是   sizeof   乙個陣列,所以是   6   *   sizeof(char)

char   *   string   =   new   char[6];

strncpy(string,   "hello ",   6 ");

sizeof(string)   是   sizeof   乙個指標,所以還是   4。和第乙個不同的是,這個指標指向了動態儲存區而不是靜態儲存區。

不管指標指向的內容在什麼地方,sizeof   得到的都是指標的棧大小

c++   中對引用的處理比較特殊;sizeof   乙個引用得到的結果是   sizeof   乙個被引用的物件的大小;所以

struct   o

; int   main()

r   引用的是整個的   o   物件而不是指向   o   的指標,所以   sizeof   r   的結果和   sizeof   o   完全相同。

sizeof,strlen 使用總結

1.sizeof是一種操作符,對變數或者物件可以不加括號,但是型別,必須加括號 2.指標與陣列sizeof 使用 1 指標也屬於一種變數型別 32位作業系統下是4位元組,64位作業系統是8位元組 例1 char p int length1 sizeof p length1 4 或 length1 8...

sizeof strlen區別與聯絡

1.sizeof是運算子,strlen是函式,具體如下 sizeof strlen 標頭檔案 stddef.h 格式 1 sizeof object sizeof 物件 2 sizeof type name sizeof 型別 3 sizeof object sizeof 物件 功能 乙個物件或者型...

十六進製制,sizeof,strlen

今天看到了sizeof的問題,發現基礎有些都記不牢了,現在把它們都記下 一 函式說明 sizeof是運算子,strlen是函式 1.sizeof 標頭檔案 stddef.h格式 1 sizeof object sizeof 物件 2 sizeof type name sizeof 型別 3 size...