3 回答

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

TA貢獻1934條經(jīng)驗 獲得超2個贊
sizeof(char)始終為1個字節(jié)。字節(jié)并不總是一個八位位組,但是:例如,德州儀器(TI)TI C55x是具有16位字節(jié)的DSP。

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