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条经验 获得超3个赞
sizeof(char)
定义为始终为1
。从C99:
当将其应用于具有char,unsigned char或signed char类型(或其限定版本)的操作数时,结果为1。
但是,不能保证为8位。实际上,在绝大多数平台上都可以,但不可以,但从技术上讲,您不能始终依靠这种方式(也不要紧,sizeof
无论如何都应使用)。
- 3 回答
- 0 关注
- 855 浏览
添加回答
举报