指针加减操作
来源:互联网 发布:淘宝买家长时间不发货 编辑:程序博客网 时间:2024/05/22 03:26
- int a[5]={1,2,3,4,5};
- int *ptr=(int *)(&a+1);
- cout<<*(a+1)<<endl;
- cout<<*(ptr-1)<<endl;
答案:
2
5
分析:
对指针进行加1操作,得到的是下一个元素的地址,而不是原有地址值直接加1,所以,
类型为t的指针的移动是以sizeof(t)为移动单位。
ptr是一个int型的指针(&a+1)。 即先取a的地址,该地址的值加sizeof(a)的值,即&a+5*sizeof(int),也就是a[5]的地址,显然当前指针已经超过了数组的界限,(int*)(&a+1)则是把上一步计算出来的地址,强制转化为int*类型,并复制给ptr。
a与&a的地址是一样的,但含意不一样
a是数组首地址,用户a[0]的地址,
&a是对象(数组)首地址,
a+1是数组下一元素的地址,即a[1]
&a+1是下一对象的地址,即a[5],因此输出 2
ptr指向a[5],并且ptr是int*类型,所以*(ptr-1)指向a[4],输出5
- 指针加减操作
- 指针加减操作
- 指针加减操作
- 指针加减操作的单位
- 关于指针的加减操作
- 指针操作:加减、解引用、下标操作
- 关于指针的加减操作的理解
- 指针的加减操作和比较
- 指针加减
- 关于指针的加减
- 指针的加减运算
- 指针加减运算
- 指针的加减
- C++ 指针加减运算
- 指针加减运算
- 指针的加减操作及对指针和数组类型的理解
- Oracle 时间加减操作
- flex时间加减操作。
- 【Cocoa(mac) Application 开发系列之四】动作编辑器(Cocos2dx)制作流程详解及附上响应鼠标滚轴事件、反转坐标系、导入/创建资源目录等知识点代码!
- 在Linux下安装和使用MySQL
- Children learn what they live
- link_path_walk()对于路径名最后一个分量的处理
- 雨
- 指针加减操作
- Java发HTTP POST请求(内容为xml格式)
- Decorator装饰模式
- NRF24L01——工作原理解读
- 五、VIM使用手册--在vim中配置ctags
- do_lookup()路径名查找
- archlinux 屏幕亮度调整 (dell studio系列的15z-1569笔记本)
- 字节对齐
- 输油管道问题