一个c++基础问题,在线等

来源:百度知道 编辑:UC知道 时间:2024/06/02 22:08:36
#include<iostream.h>
void main()
{
int (*p)[4];
int a[4]={1,2,3,4};
p=&a;
cout<<p<<endl;
cout<<a<<endl;
cout<<*p<<endl;
cout<<**p<<endl;
}
上述程序p=&a这一行如果写成p=a,编译器visual c++6.0则会报错,为什么?a不就是首地址吗?为什么还要对a还要曲地址呢?

楼上的不对。。。
int (*p)[4]是说p是一个指针,它指向的是一个有4个int元素的数组,类似于一个二重的指针。
*p是一个数组,也就是数组首元素的地址,*p==a;

因为int (*p)[4];定义的是一个指针数组,也就是说p是指向指针数组的指针,而a相当于指针一个数组的指针,所以需要再用一个&取地址

赞同楼上说的.

a[0],a[1]这些是变量,a是指针,是这组变量的首地址。
但p是一个指向数组的指针,a是指向数组中第一个变量的指针,p[0]指向的单元是从a[0]到a[3]所有的16个单元。