一个关于C++数组的小问题
这是一个测试指向数组的指针数组的例子。是一本C++教程里的现成例题。pf是一个指针数组,每个元素分别存放不同数组的地址。代码如下:
#include<iostream.h>
void main()
{
double aa[2]={1.1,2.2},bb[2]={3.3,4.4},cc[2]={5.5,6.6};
double (*pf[3])[2];
pf[0]=&aa;pf[1]=&bb;pf[2]=&cc;
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
cout<<*(*pf[i]+j)<<" ";
cout<<endl;
}
}
输出如下:
1.1 2.2
3.3 4.4
5.5 6.6
我把代码试验过了,没有问题,但是我有个地方一直不明白,很长时间了。既然数组名是该数组的首地址,是一个指向本身首地址的指针,为什么代码中还要用pf[0]=&aa 之类的语句,为什么需要用&这个运算符呢?aa本身不就是个指针吗?它不就是一个十六进制的地址值吗?一直不明白。但是我试着把&符去了然后编译运行,甚至都不能通过编译,提示有错误。想问下CSDN的达人这到底是怎么回事。拜托讲详细点!这一直是我最困惑的地方。如果满意结贴的话,定有额外加分送给真诚回复者。谢谢!