C++的int (*p)[3]与int *p,int**p的区别

如上,还请解释一下new int[5][5]返回的是什么,请说的详细些,我的概念有些乱

int (*p)[3]表示p是个指向维度为3的二级指针相当于一个n行3列数组a[n][3],每一行的首地址;
int *p表示一个指向整形的指针;
int**p表示一个二级指针;
其中int (*p1)[3]与int**p2都是二级指针,对于二维数组来说我觉他们最大区别就是p1只能指向列数为3的二维数组的首地址;而p2可以指向任意二维数组首地址;同时要注意他们两者之间+ 、++ 等运算符的规律也不一样
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-18
int (*p)[3],p是一个数组指针
int *p; p是一个指针变量
int **p; p是一个二级指针
第2个回答  推荐于2018-04-10
int *p是指针,指向一个int类型;int **p是指针的指针指向int *类型(理解方便,可以理解为int *类型);int (*p)[3] 是指针的指针(二维数组指针),指向一个数组,而数组内容指向一个一维含3个元素的数组,简单讲即*p指向int[3]类型,当然*(p+1)....*(p+n)都指向一个一维含3个元素的数组,p本身指向一个数组。
new int[5][5]编译是通不过的,二维动态数组不是这样分配的,需要先申请int *类型数组,数组的元素再赋值为int [5]类型的数据即
int **p=new int*[5];
for(int i=0;i<5;++i)
p[i] = new int[5];追问

可是我写的char(*p)[3]=new char[2][3];通过了编译啊,也运行了啊,我在VS2012上运行的

追答

不好意思,new char[2][3]可以通过,但是第二维3必须是常量而不能是变量,如果第一维和第二维都是变量,必须像我那个方式申请。
建议你可以多去csdn上逛逛,给你个链接
http://bbs.csdn.net/topics/20140388
技术交流还是去csdn

本回答被提问者和网友采纳

C++的int (*p)[3]与int *p,int**p的区别
int (*p)[3]表示p是个指向维度为3的二级指针相当于一个n行3列数组a[n][3],每一行的首地址;int *p表示一个指向整形的指针;int**p表示一个二级指针;其中int (*p1)[3]与int**p2都是二级指针,对于二维数组来说我觉他们最大区别就是p1只能指向列数为3的二维数组的首地址;而p2可以指向任...

C++中int *p和 int 的区别
int *p; 定义了一个未初始化的int类型指针, 他指向int类型数据的内存块起始位置;int 是有符号整形变量, 32位系统下是4个字节大小;

在C++中int* p;和int* p;有何区别吗?
evil”]更糟的东西,而C++则很强调类型。所以,“int *p”和“int* p”之间并无对错之分,只有风格之争。一个典型的C程序员会写“int p”,而且振振有词地告诉你“这表示‘*p是一个int’”——听上去挺有道理的。这里,*和p绑在了一起——这就是C的风格。这种风格强调的是语法。而一个典...

int* p, int* p,* p有什么区别
一、意思不同 int *p和int* p后者比前者更好理解为指针。int *p;可能会被理解为一个变量,名为*p,int* p;很直观的被理解为一个指针,名为p。二、强调类型不同 p是一个int’这里*和p绑在了一起——这就是C的风格,这种风格强调的是语法。而一个典型的C++程序员会写“int*p”,并告诉你...

c++中int*&p和int&*p的区别
c++中int *&p和int &*p的区别为:性质不同、 使用不同、访问不同。一、性质不同 1、int *&p:int *&p是指针的int类型引用。2、int &*p:int &*p是引用的int类型指针。二、 使用不同 1、int *&p:int *&p是指针 的 别名 ,可以当成指针使用。2、int &*p:int &*p指针不能指向引用...

C++中int *p和 int 的区别
int p;定义了一个未初始化的int类型指针,他指向int类型数据的内存块起始位置;int 是有符号整形变量,32位系统下是4个字节大小;

c++中*p[3],(*p)[3],(*p)(a,3),*(*p)(a,3)之间有什么区别,可以具体点吗...
int(*p)[3];p=a;cout<<**p<<endl;\/\/输出为1 cout<<*(*++p)<<endl;\/\/输出为4 \/\/他呢是一个指针 (*p)(a,3), 是函数指针。比如你定义了int (*p)(a,3);\/\/假定a是int类型 那么只要返回值和参数相同的情况,是可以给p赋值为任何函数,比如你恰好有个函数,int func(int,int ) ...

C++中 int (*PArray)[3]与int *PArray[3]区别是什么?
int (*PArray)[3];(*PArray)说明PArray先是一个指针,*解除引用得到其地址,之后与[3]结合,说明PArray是一个指向可以存储3个整型值的数组指针。同理:int *PArray[3],由于*具有右结合性,并且[]运算符的优先级比*高。所以就是一个PArray[3]数组,之后*被解除引用,所以PArray[3]之中存储...

int *(*p(int))[3] 这是什么意思?
int *p[3] 是一个数组,有3个成员,其成员是指向整型的指针。int (*P)[3]是一个指针,它指向一个有3个整型的数组。int *p(int);一个形参为int型的返回值为int型指针值的函数。int *(*p(int))定义一个指针指向一个形参为int型的返回值为int型指针值的函数。int *(*p(int))[3]定义三个...

C++中int* p;
4、int *p:表示p是一个指针变量,它的值是某个整型变量的地址。或者说p指向一个整型变量。至于p究竟指向哪一个整型变量,应由向p赋予的地址来决定。5、再如:int *s是指向整型变量的指针变量,float *d是指向浮点变量的指针变量.,char *g;是指向字符变量的指针变量。

相似回答