指针类型的强制转化及实例分析
来源:互联网 发布:单片机最小系统的作用 编辑:程序博客网 时间:2024/05/16 15:43
【前言】
1.指针是一个记录变量地址的变量,在32位系统中指针变量就是一个32bit的变量(一个int的大小)
2.声明不同类型的指针变量隐含了两个重要信息:
a.指针类型决定了指针结合指针运算符的时候,读取内存的字节数;
b.在指针移动(加减1)的时候在内存中移动的字节数。
【实例】
#include <stdio.h>int main(){ int ia = 0x0f1f2f3f; int *pint; char *pchr; pint = &ia; pchr = (char *)pint; printf("pint:%x pchr:%x\n",pint,pchr); printf("pint+1:%x pchr+1:%x\n",pint+1,pchr+1); printf("*pint=0x%x *pchr=0x%x\n",*pint,*pchr); printf("0x%x 0x%x 0x%x 0x%x \n",*pchr,*(pchr+1),*(pchr+2),*(pchr+3)); return 0;}
运行结果分析:
root@cloud2:~/slp# ./a.out
pint:bfc195ac pchr:bfc195ac
#指针内容是一样的
pint+1:bfc195b0 pchr+1:bfc195ad
#不同指针的移动(加减1)的操作对应不同的步长(char 步长为1,int步长为4)
*pint=0xf1f2f3f *pchr=0x3f
#指针的运算(*)中读取的内存的字节数是不同的
0x3f 0x2f 0x1f 0xf
#pchr指针的移动(加减)是按照char大小进行移动的
另外,综上结果可以看出内存的存储方式是int的高字节存于低地址,如下图:
------------------------------------------------------------------------------------------------------
- 指针类型的强制转化及实例分析
- C++的强制类型转化
- 分析 C++中的强制类型转化
- 指针的强制类型转换
- 指针的强制类型转换
- 指针的强制类型转换
- 把“0”强制转化为结构体指针类型得到成员变量的偏移量
- 指针类型强制转换及地址打印
- C语言的强制类型转化总结
- 强制类型转化总结
- C++强制类型转化
- java 强制类型转化
- 强制类型转化
- 强制类型转化小结
- C++类型转化分析:强制转换->const_cast转换
- 函数指针的强制类型转换
- 关于指针强制类型转换的思考
- 函数指针的强制类型转换
- To 薛洪
- Android中如何让图片自适应控件的大小
- 一本书,让我走上编程之路
- QT中QWidget类简介
- CRect 详解及注意事项
- 指针类型的强制转化及实例分析
- Hunter的读《高效程序员的45个习惯》
- 关于c#结构体(struct)定义详解
- 跨域请求
- Android 开机震动在哪调用的,怎样关闭?
- 黑马程序员————IO流3(day20)
- Android----adb工具的安装
- maven联通网络下中央仓库不能访问的解决办法
- Oracle中的restricted, quiesce, suspend