数组指针问题求解
定义数组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));