3 回答

TA貢獻1828條經驗 獲得超3個贊
是的,
char
而且byte
是幾乎一樣的。字節是最小的可尋址內存量,char
C中的a也是如此。char
始終具有大小1。根據規范,第3.6節:
字節
數據存儲的可尋址單元,其大小足以容納執行環境的基本字符集的任何成員
和3.7.1節字符:
字符
單字節字符
<C>位表示形式,適合一個字節A
char
有CHAR_BIT
位。它可以是任何數字(根據規范,可以是8或更大),但是肯定是最常見的8。但是,有一些真正的機器具有16位和32位char
類型。CHAR_BIT
在中定義limits.h
。根據規范,第5.2.4.2.1
<limits.h>
節的整數類型的大小:以下給出的值應由適合在
#if
預處理指令中使用的常量表達式代替。此外,除了CHAR_BIT
和之外MB_LEN_MAX
,以下內容應替換為與根據整數提升轉換為相應類型的對象的表達式具有相同類型的表達式。其實現定義的值的大小(絕對值)應等于或大于所示的相同符號。—不是位字段的最小對象的位數(字節)
CHAR_BIT
8
sizeof(char) == 1
。總是。根據規范第6.5.3.4
sizeof
節,操作員第3段:應用于類型為
char
,unsigned char
或的操作數signed char
(或其限定版本)時,結果為1。您可以分配的內存與系統允許分配的內存一樣多-標準中沒有定義內存的多少。您可以想象,例如,一臺具有云存儲支持的內存分配系統的計算機-您可分配的內存實際上可能是無限的。
這是完整的規范部分7.20.3.3
malloc
函數:概要
1個
#include <stdlib.h>
void *malloc(size_t size);
描述
2該
malloc
函數為大小由其指定size
且值不確定的對象分配空間。退貨
3該
malloc
函數返回空指針或指向分配空間的指針。這是整個規范的全部,因此您可以依靠的確實沒有任何限制。

TA貢獻1872條經驗 獲得超4個贊
sizeof(char)
定義為始終為1
。從C99:
當將其應用于具有char,unsigned char或signed char類型(或其限定版本)的操作數時,結果為1。
但是,不能保證為8位。實際上,在絕大多數平臺上都可以,但不可以,但從技術上講,您不能始終依靠這種方式(也不要緊,sizeof
無論如何都應使用)。
- 3 回答
- 0 關注
- 920 瀏覽
添加回答
舉報