前言
经常能碰到关于位数和存储关系上的问题,今天决定花点时间来好好的解析一下。
位数的含义
cpu的位是指一次性可处理的数据量是多少,1字节=8位,2的八次方,32位处理器可以一次性处理4个字节的数据量,依次类推,32位操作系统针对的32位CPU设计。同时32位cpu可以最多就可以访问2的32次方的空间,即4g的内存空间。这里有相关的文章。
sizeof函数
这里再来说下sizeof 函数,是一个判断数据类型或者表达式长度的运算符,在32位系统和64位系统下有不同的表现,
Byte | 32 | 64 |
---|---|---|
char | 1 | 1 |
unsigned char | 1 | 1 |
signed cha | 1 | 1 |
int | 4 | 4 |
short | 2 | 2 |
long | 4 | 8 |
long int | 4 | 8 |
signed int | 4 | 4 |
unsigned int | 4 | 4 |
unsigned long int | 4 | 8 |
unsigned long long | 8 | 8 |
signed long long | 8 | 8 |
float | 4 | 4 |
double | 8 | 8 |
long double | 8 | 16 |
指针 | 4 | 8 |
strlen()函数
最根本的区别在于strlen是函数,而sizeof是运算符。
还有一个比较明显的在于sizeof会计算字符串末尾的‘\0’结尾符,而strlen不会。