关于几个指针的迷惑

来源:互联网 发布:淘宝网一次性丁腈手套 编辑:程序博客网 时间:2024/05/16 12:38

先看如下程序:

int main()  {  int a [5]={1,2,3,4,5};  int *ptr=(int *)(&a+1); //区别于a和a[0]以及&a !  printf("%d,%d\n",*(a+1),*(ptr-1));  } 

输出结果为2,5

这里需要弄明白的是数组和指针的关系:

int a[5];      cout<<"a = "<<a<<endl;cout<<"&a = "<<&a<<endl;cout<<"a+1 = "<<a+1<<endl;cout<<"&a+1 = "<<&a+1<<endl;    cout<<"*********************"<<endl;    int b[3][4];cout<<"b = "<<b<<endl;cout<<"&b = "<<&b<<endl;cout<<"b+1 = "<<b+1<<endl;cout<<"&b+1 = "<<&b+1<<endl;    cout<<"*********************"<<endl;int c[3][4][3];cout<<"c = "<<c<<endl;cout<<"&c = "<<&c<<endl;cout<<"c+1 = "<<c+1<<endl;cout<<"&c+1 = "<<&c+1<<endl;