结构体相关的计算(结构体指针加一以及强制类型转换后加一)
来源:互联网 发布:手机视频软件 编辑:程序博客网 时间:2024/06/04 20:48
定义一个结构体,大小为16个字节
struct AAA{long 1A1;char cA2;char cA3;long 1A4;long 1A5;}*p;
int main(){p = (struct AAA*)0x100000;printf("%p\n", p + 0x1);printf("%p\n", (unsigned char)p + 0x1);printf("%p\n", (unsigned int)p + 0x1);printf("%p\n", (unsigned long*)p + 0x1);printf("%p\n", (unsigned char*)p + 0x1);printf("%p\n", (char *)p + 0x1);printf("%p\n", (char **)p + 0x1);system("pause:");return 0;}运行结果如下:
这下我们就得分析一下为什么结果会是这样。
1.p(0x100000)是一个指针,指向占16个字节的结构体,加一跳过整个结构体。(p+0x1=0x100010)
2.将p强制类型转化为无符号长整型,是一个数字,加1直接加1。 ((unsigned char)p + 0x1=0x1000001)
3.将p强制类型转化为无符号整型,是一个数字,加1直接加1。 ((unsigned int)p + 0x1=0x1000001)
4.p是一个指针,指向无符号长整型,占4个字节。 (unsigned long*)p + 0x1=0x1000004)
5.p是一个指针,指向无符号字符,占1个字节。 (unsigned char*)p + 0x1=0x1000001)
6.p是一个指针,指向字符,占1个字节。 (char *)p + 0x1=0x1000001)
7.p是一个二级指针,里边存的是地址,占4个字节。 ((char **)p + 0x1=0x1000004)
阅读全文
1 0
- 结构体相关的计算(结构体指针加一以及强制类型转换后加一)
- 结构体指针强制类型转换
- 结构体类型的指针的强制转换
- 结构体类型的指针的强制转换
- c中结构体指针的强制类型转换
- 结构体之间的强制类型转换
- 结构体的强制类型转换
- 结构体之间的强制类型转换
- 结构体类型强制转换
- 结构体类型强制转换
- 结构体强制类型转换
- 强制类型(结构体)转换NULL-----C指针的黑科技
- 结构体对齐问题以及强制类型转换问题总结
- 结构体对齐问题以及强制类型转换问题总结
- 结构体对齐问题以及强制类型转换问题总结
- 结构体对齐问题以及强制类型转换问题总结
- 结构体对齐问题以及强制类型转换问题总结
- 结构体对齐问题以及强制类型转换问题总结
- Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序
- android解析XML文件
- java基础篇《8》--面向对象《3》
- Js中的运算
- 初步认识CSS
- 结构体相关的计算(结构体指针加一以及强制类型转换后加一)
- Spring 4+MyBatis纯注解零XML整合
- 使用python将excel转为lua文件
- java-鼠标监听(MouseListener、MouseMotionListener)-鼠标事件(MouseEvent)
- Open Judge2748:全排列
- shell script---准备知识
- 用代码实现GridLayout平均分布样式
- javascript运算符
- [数学知识][几何]求三角形面积的几种方法