指针的强制类型转换
来源:互联网 发布:网络暴力算违法吗 编辑:程序博客网 时间:2024/05/11 00:28
先看下面的例子
#include <stdio.h>
int main(void){
int *ip;
int a[2]={0x301,0x44444444};
ip = a;
printf("*ip=%x, *(ip+1)=%x/n",*ip,*(ip+1));
printf("*(char *)ip=%x, *((char *)ip+1))=%x",*(char *)ip,*((char *)ip+1));
return 0;
}
运行后的结果如下
其实放在内存的内容都是二进制编码,只是拿出来的类型依照指针类型而定,更确切的应该说成只是在处理内存时是依照指针类型而定,比如用(char *)作强制转换,则将来处理相应的内存地址时是按字节为单位处理的,如果用(int *)则将按4个字节为单位进行处理,它们的差异会是巨大的。
现在我们来分析上面的结果
1.int *ip 按四个字节取值,由于a是int数组,所以每个元素都是int型的,前四个字节是Ox0301,后四个字节是0x44444444
2.char*ip按一个字节取值,a的分析同上,由于0x代表16进制,所以0x0301每个数字占用4位,以个字节是8位,所以头一个字节是低位01,第而个字节是高位03
*((char *)ip+1) *((char *)ip)就使用了强制类型转换
- 指针的强制类型转换
- 指针的强制类型转换
- 指针的强制类型转换
- 指针强制类型转换
- 强制转换指针类型
- 指针强制类型转换
- 指针强制类型转换
- 指针强制类型转换
- 指针类型强制转换
- 指针类型强制转换
- 函数指针的强制类型转换
- 关于指针强制类型转换的思考
- 函数指针的强制类型转换
- 关于指针强制类型转换的思考
- 指针的强制类型转换思考
- 函数指针的强制类型转换
- 函数指针的强制类型转换
- 3.5.指针的强制类型转换
- extern用法详解
- 通过SET NOCOUNT ON 命令使触发器具有更好的性能
- 那一首首淡忘却记忆犹新的歌(KK记)
- C++类型转换小结
- sqlserver 只有MDF文件恢复数据库
- 指针的强制类型转换
- SQL 2008中FileStream数据类型
- 欢迎C爱好者光临本人的BBS,答疑解惑
- spring+hibernate 整合出现的错误集合
- JSP/Servlet 中的汉字编码问题
- C++中const用法浅析
- 甲骨文掌门:云计算已被滥用成口头禅
- (转)再谈非模态对话框的销毁
- 佛学的181条智慧 献给广大的程序员