1、sizeof是運算子,而strlen是函式。
2、sizeof操作符的運算結果為size_t,他在標頭檔案中的typedef為unsigned int。該型別保證能容納所操作物件的最大位元組大小。
3、sizeof可以用型別做引數,而strlen只能用char*做引數,且必須是以『\0』結尾。
4、陣列做sizeof引數不退化,而做strlen就退化成指標。
5、大部分編譯程式在編譯的時候就把sizeof處理過了,這就是sizeof(x)可以用來作為陣列空間大小的原因。
char str[20]=「0123456789」;
a=strlen(str); // a=10,執行時確定
b=sizeof(str); //b=20,編譯時確定,計算str陣列的最大空間。
6 、 sizeof後面如果是型別則必須加括號,如果是變數名則可以不用加。
如: char c ;
sizeof c;// c為變數名則不用加括號
7、sizeof運算子不適用於計算物件是動態分配的空間以及外部陣列。
關於C語言sizeof運算子和strlen 函式
c primer plus總結 1.不同點 sizeof運算子是以位元組為單位返回運算子物件的大小 strlen 函式給出字串中的字元長度 2.相同點 sizeof運算子和strlen 函式返回型別可以用 zd轉換 不識別 zd,嘗試換成 u或者 lu sizeof運算子和strlen 函式返回的實...
(24)位運算子 sizeof運算子
位運算子作用於整數型別,並把運算物件看成是二進位制的集合。位運算子提供檢查和設定二進位制位的功能,滿足左結合律。但是位運算關於符號位如何處理沒有明確的規定,改變符號位的值是一種未定義的行為,所以建議僅將位運算子作用於無符號 型。左移運算子 右移運算子 的行為則依賴於其左側運算物件物件的型別 如果該運...
sizeof運算子詳解
1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現什麼結果呢?sizeof mystruct 為多少呢?也許你會這樣求 sizeof mystruct sizeof double sizeof char sizeof in...