C++ int (*p)[4]

这里(*p)可以理解成数组名吗,后面[4]是它的大小;
请详细解释一哈这个吧.比如它是怎么指向的,各部分的意思;初学脑壳转不过弯

不能。
你的理解对于int *p[4]才是基本正确的。

你可以这么想:
int (*p)[4] ,因为小括号()的优先级最高,所以先考虑小括号,即p先和 * 结合,所以p的本质是一个指针,再与方括号[ ]结合,即[ ]描述了p的性质——p是一个指针,它指向的是一个数组,这个数组有4个元素,元素是int类型的。

int *p[4],因为[ ]的优先级高于 * ,所以先考虑 [ ] ,即p先和 [ ]结合,所以p的本质是一个数组,再与 * 结合,即 * 描述了p的性质——p是一个数组,数组里装的元素是4个指针,指针是int型的。

希望我的回答对你有所帮助:)
还有不明白的百度hi~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-28
这里的*p是一个指针,他是指向4个元素的指针,即p++则跳过4个元素
数组指针的定义
  数组名的指针,即数组首元素地址的指针。即是指向数组的指针。
  例:int (*p)[10]; p即为指向数组的指针,又称数组指针。
第2个回答  2012-01-28
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
这是二维数组的指针,相当于
int p[ ][4]; 这样写易于理解,但不符C语言语法;
如: int data[10][4]; // 具体的二维数组
int (*p)[4]; // 二维数组指针
p=data; // 这是正确的赋值
// p[5][2] p[i][j] 都可用的
第3个回答  2012-01-28
#include<iostream>
using namespace std;
int main()
{
int a[] = {1,2,3,4,5};
int (*p)[5] =&a;
cout<<*p;
cout<<endl<<**p;
cout<<endl<<&p;
int i;
cin>>i;

return 0;
}

结合一楼的思想!追问

**p和&p不一样吗?

追答

不一样!

&p是获得p的地址;
**p是求出*p的所指向的变量值。

相似回答