C語言 不同資料型別長度獲取問題

2021-10-08 00:23:55 字數 976 閱讀 3251

我們能常在用到 sizeof 和 strlen 的時候,通常是計算字串陣列的長度,

c語言中有乙個可以獲取字串長度的函式strlen並且與sizeof做對比:

extern unsigned int strlen(char s);

其中形參只能為字元指標型別,其從給定變數的第乙個位置開始掃瞄,直到遇到『\0』,計數結束,其中長度不包括結束符。

標頭檔案:string.h或cstring

使用格式:strlen (字元指標表示式)

與sizeof()區別:

⒈sizeof操作符的結果型別是size_t,它在標頭檔案中typedef為unsigned int型別。

該型別保證能容納實現所建立的最大物件的位元組大小。

⒉sizeof是取位元組運算子(關鍵字),strlen是函式。

⒊sizeof可以用型別做引數,strlen只能用char做引數,且必須是以』\0』結尾的。

sizeof還可以用函式做引數

#include

#include

using namespace std;

intmain

(void

)//輸出的結果是sizeof(short),即2。

⒋陣列做sizeof的引數不退化,傳遞給strlen就退化為指標了。

⒌大部分編譯程式 在編譯的時候就把sizeof計算過了是型別或是變數的長度。這就是sizeof(x)可以用來定義陣列維數的原因

6.strlen的結果要在執行的時候才能計算出來,是用來計算字串的長度,不是型別佔記憶體的大小。

7.sizeof後如果是型別必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函式。

⒏當適用了於乙個結構型別時或變數, sizeof 返回實際的大小,

當適用一靜態地空間陣列, sizeof 歸還全部陣列的尺寸。

⒐陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址。

C 資料型別長度問題

一 位元組和字長 位元組,八位就是乙個位元組,是固定概念。字長是指計算機一次能處理的二進位制資料的長度,是乙個非固定的概念。例如,8位計算機的字長為8,即乙個位元組,32位計算機的字長位32,即4個位元組,同理,64位計算機的字長為64,即8位元組。二 c 中的資料型別 1 字元型資料char,該型...

c語言之資料型別長度

c語言之資料型別長度 分享 2011 05 30 20 57 青雲清 瀏覽 219072 次 急2011 05 30 21 04 提問者採納 不要誤人子弟啊 搞清楚再貼出來 追問 那你的答案是啥呢?追答 16位 2,4,4,8,1 32位4,4,4,8,1 二 資料型別對應位元組數 程式執行平台 不...

c語言資料型別位元組長度

short與long兩個限定符的引入可以為我們提供滿足實際需要的不同長度的整形數。int通常代表特定機器中證書的自然長度。short型別通常為16位,long型別通常為32位,int型別可以為16位或32位。各編譯器可以根據硬體特性自主選擇合適的型別長度,但要遵循下列限制 short與int型別至少...