爱生活 爱技术

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  32 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks
#include <iostream>
using namespace std;
int main()
{
 int a[5] = {1,2,3,4,5};
 int *ptr = (int *) (&a+1);
 cout << *(a+1) << endl;
 cout << *(ptr-1) << endl;
 return 0;
}

(&a+1)中&a 是表示数组的地址,进行+1,相当于地址+1*(sizeof(a)),即指向数组末的尾地址(可理解为下个数组的首地址^-^)
(int *)(&a+1) 是将int(*)[5]强转成int *,好赋给int * ptr(ptr是个指向普通整型变量的指针)
(ptr-1) ptr是一个指向整型的普通指针,所以-1操作相当于地址-1*(sizeof(int))
a+1 a是数组的首元素的地址,+1相当于a[1]的地址
 
SO:*(a+1) :     2
   *(ptr-1):    5
posted on 2009-09-21 18:54 海 阔 天 空 阅读(720) 评论(0)  编辑 收藏 引用