首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组指针有关问题求解

2012-09-12 
数组指针问题求解定义数组a: ?int a[5]{1,2,3,4,5}直接使用a即为指向数组首地址的指针,而&a为指向该指针

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

热点排行