读书人

数组指针有关问题求解

发布时间: 2012-09-12 09:21:30 作者: rapoo

数组指针问题求解
定义数组a: ?int a[5]={1,2,3,4,5}

直接使用a即为指向数组首地址的指针,而&a为指向该指针的指针。

a和&a应该不一样吧,但执行cout<<a<<endl<<&a;输出的两个地址相同,请问一下原因

另外请讲解一下这三行的后两句

int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
cout<<(*(a+1),*(ptr-1));

指针这块好晕啊

[解决办法]
cout<<a<<endl;的时候,a这时代表的是数组第一个元素的地址,
cout<<&a<<endl;的时候,输出的是整个数组的地址,

在这种情况下,a相当于一个指向数组元素的指针,&a相当于数组的指针,存放的是相应的地址。。

它们的值正好相当,但是意义不一样,

cout<<a+1<<endl;
cout<<&a+1<<endl;
可见结果不同


[解决办法]

C/C++ code
int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);cout<<(*(a+1),*(ptr-1)); 

读书人网 >C语言

热点推荐