首先说一下哈sizeof(类型)就直接回复类型的大小
这里我们区分以下bit 和 byte 的区别吧
字 word
字节 byte(字长是指字的长度)
位 bit
1字=2字节(1 word = 2 byte)
1字节=8位(1 byte = 8bit)
bit 电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。
Byte一个Byte由8 bits 所组成,可代表一个字元(AZ)、数字(09)、或符号(,.?!%&±*/),是记忆体储存资料的基本单位,至於每个中文字则须要两Bytes。当记忆体容量过大时,位元组这个单位就不够用,因此就有千位元组的单位KB出现,以下乃个记忆体计算单位之间的相关性:
1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
一个字的字长为16
一个字节的字长是8
一个字等于多少个字节,与系统硬件(总线、cpu命令字位数等)有关,不应该毫无前提地说一个字等于多少位。
正确的说法:
①:1字节(byte) = 8位(bit)
②:在16位的系统中(比如8086微机) 1字 (word)= 2字节(byte)= 16(bit)
在32位的系统中(比如win32) 1字(word)= 4字节(byte)=32(bit)
在64位的系统中(比如win64)1字(word)= 8字节(byte)=64(bit)
‘a’是个字符(char)
所以就是sizeof(char)
sizeof 操作符用于计算变量的字节大小
因为是数组嘛,变量是按照一整个数组来的
这个就结合了上次的union的只是点
整个t union是以int作为大小判断的
所以整个t的sizeof其实也等于int的sizeof
,运算符就是输出后面的那个
sizeof()我们也讲过啦
~这个我们好像之前也遇到过**【但我还是不知道它是干嘛的哭】**
这玩意我就只是知道存在,而且void和void*也不一样——
于是我又查了查【准确来说着东西的答案还会根据程序来发生变化】
这取决于编译程序。
因为不能定义void类型的变量,所以它也就不占空间,理论上应该sizeof(void)是0,在VC中的确也是0,而gcc把它定为1。
如果是C++的话, sizeof(void)根本是编译通不过的。 随便说一下,C++中一个空的结构或类: struct EMPTY{};
sizeof( struct EMPTY ); 也是返回1。 但如果是C语言,gcc中就会返回0。而VC中根本不允许空的结构。
——来自网络
sizeof(void)是1 sizeof(void*)是4【是个指针】
啊这个记住就好
本来大小就是正整数