一个指针变量占几个字节问题
2015-06-14 11:38
295 查看
[cpp] view
plaincopy
# include<stdio.h>
int main(void)
{
int i = 373;
double j = 4.5;
char ch = 'A';
int * p = &i;
double * q = &j;
char * r = &ch;
printf("%d %d %d\n",sizeof(p), sizeof(q), sizeof(r));
return 0;
}
运行结果是 4 4 4
int类型不是2B, double类型不是8B, char不是1B吗?这是怎么回事?求解答!
解答:
指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),所以不同类型的指针长度都一样你输出的4 4 4,说明指针长度为4字节可以记录的地址范围是0x00000000~0xFFFFFFFF,这个范围才是指针变量的值比如说一个char
1字节,可以存在0x0,也可以位于0xFFFFFFFF而和char占用1字节还是100字节无关,指针的范围只和机器字和系统有关比如你的32位系统,指针长度为4,在64位操作系统下那么就都是8了。
相关文章推荐
- ETL(数据仓库技术)
- Node.js学习--基础知识(4)--模块与包
- 开放远程连接mysql
- 相对布局RelativeLayout
- while循环和练习
- [leetcode] Fraction to Recurring Decimal
- linux 常用的目录和权限
- 学习七十一雾央MFC游戏心得,初体验(六)
- [转载] nginx的负载均衡
- 互联网云学院(邯郸AESO培训基地)
- zookeeper 安装
- OpenGl渲染相关
- Java I/O : Java中的进制详解
- Centos7添加epel和elRepo源,并自动挂载硬盘(不修改文件)
- java 框架基础知识(1)----反射-->Spring IoC
- [leetcode] Word Break
- Java I/O : Java中的进制详解
- For循环的方法和格式和练习
- linux网络编程(组播)
- DB2v9.1目录结构