数组指针(int *)(&a+1)
来源:互联网 发布:淘宝店过户 编辑:程序博客网 时间:2024/04/29 01:19
int main(){ int a[] = {4,8,3,1,2}; int *p = (int *)(&a+1); cout<<*p<<endl;//1 int x = *(a+1); int y = *(p-1); cout<<x<<" "<<y<<endl;//2 return 0;}
打印结果:1出输出一个错误大数,2处打印出:8 2
此处的关键是(&a+1)此处的&a 相当于一个函数名,p指向了整个数组的下一个位置,导致*p输出一个大数,而x和y输出正确。
&a+1不是首地址+1,系统会认为加了一个整个a数组,偏移了整个数组a的大小(也就是5个int的大小)。所以int *p=(int *)(&a+1);其实p实际是&(a[5]),也就是a+5.
&a是数组指针,其类型为int(*)[5];
可参考:http://blog.csdn.net/tsaiyong_ahnselina/article/details/11863557
0 0
- 数组指针(int *)(&a+1)
- int *ptr1=(int *)(&a+1)数组指针
- int (*a[]) () 指针数组函数
- [C++] const int *a, int const *a,int * const a,区别,指针数组
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义(转)
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- C++二维指针数组,即型如int** a[]的一些说明
- C语言,数组与指针:int (*)p[4]; int *q; int a[4]; int b[3][4];
- 取数组地址引发的血案(int*)(&a+1);(int*)((int)a+1);
- 编写函数fun(int *a,int n,int *odd,int *even),功能是:求出数组a[]中所有偶数之和,利用指针even返回偶数之和
- HOJ 1191 (next_permutation()的应用)
- 2014.3.29阿里实习笔试题
- Android中完美解决CheckedTextView选择乱跳问题
- maven springMVC+Mybatis
- dispatch_semaphore_create信号
- 数组指针(int *)(&a+1)
- dedecms V5.7笔记:判断空值或含有某个值的写法(例如是否推荐文章,是否图片等)及field:picname function='thumb(@me最大比例缩图的显示判断
- 【排序算法】经典排序算法之插入排序
- php函数传值的几个细节,及对应实例代码
- Maven系列2--pom.xml 配置详解
- poj1035 Spell Checker
- 基于注解的SpringMVC简单介绍
- ASCII码表
- Hadoop的TaskTracker黑名单机制