int (*p)[4]等同于int *p[4]吗?

如题所述

答:不等同。int *p[4]是一个指针数组,就是数组里面放的是指针。由于[]比*优先级更高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,它有4个元素,然后再与p前面的*结合,*表示此数组是指针类型的,每个数组元素(也就是一个指针变量)都可以指向一个整形变量。*p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中 (*p)[4]是数组指针,他是指针并且是一个指向一维数组的指针。因为以行为单位,又称行指针。通俗点讲,后面的[4]说明他的每行有4个元素,[0]代表第一列的下标,[1]代表第二列的下标,一次类推。-------------------------------------------------------------------------------------------------这是一个数组指针,指向对象是这个数组; 示例: static int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};/* 定义二维数组m并初始化*/ int (*p)[4];//数组指针 p是指针,指向一维数组,每个一维数组有4个int元素 int i,j; p=m; //p是指针,可以直接指向二维数组 printf("--数组指针输出元素--\n"); for(i=0;i<3;i++)/*输出二维数组中各个元素的数值*/ { for(j=0;j<4;j++) { printf("%3d ",*(*(p+i)+j)); } printf("\n"); }
温馨提示:内容为网友见解,仅供参考
无其他回答

int (*p)[4]等同于int *p[4]吗?
答:不等同。int *p[4]是一个指针数组,就是数组里面放的是指针。由于[]比*优先级更高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,它有4个元素,然后再与p前面的*结合,*表示此数组是指针类型的,每个数组元素(也就是一个指针变量)都可以指向一个整形变量。*p[4]是指针数组,他是...

int(*p)[4] int*p[4]是一个意思吗?
当然不是,int(*p)[4]表示p是一个指针变量,它指向包含4个整型元素的一维数组 而int *p[4],由于方括号[]运算级别高,因此p先与[4]结合,此时p[4]定义成数组形式,再与前面的 * 结合,这样一来就是一个存放指针的数组了。

int (*p)[4]和int * p[4]到底是神马意思啊
不是的,*p[4]表示长度为4的指针数组(本质是一个数组,就当一个数组用就行了),而(*p)【4】表示指向长度为4的数组的一个指针(本质是一个一级指针),当然他们的具体更加详细的区别(指针数组和数组指针)可以参考你的学习资料啦,而二级指针的一个标志是有两个**的,在实际应用中一般很少用...

int*p[4];与int<*p>[4];的作用相同,都定义了一个指向数组吗?
这两个是不一样的 int<*p>[4];这个应该是int(*p)[4];吧 int*p[4];这是定义了一个数组,数组名是p, 这个数组有4个元素,元素的类型是指向int的指针:比如有:int a1,a2,a3,a4;int*p[4];那么就可以这样:p[0]=&a1;p[1]=&a2;p[2]=&a3;p[3]=&a4;int(*p)[4]; 这是定义了...

int(* p)[4]和int* p[4]有什么区别
一、性质不同 1、int (*p)[4]:int (*p)[4]是个指针,指向有四个int类型数据的数组。2、int *p[4]:int *p[4]是个数组,每个元素都是一个int *指针。二、长度不同 1、int (*p)[4]:int (*p)[4]的长度为1,为一个数组。2、int *p[4]:int *p[4]的长度为4,有四个元素空间...

int (*p)[4] 和 int *p[4]的区别?
一、性质不同 1、int (*p)[4]:int (*p)[4]是个指针,指向有四个int类型数据的数组。2、int *p[4]:int *p[4]是个数组,每个元素都是一个int *指针。二、长度不同 1、int (*p)[4]:int (*p)[4]的长度为1,为一个数组。2、int *p[4]:int *p[4]的长度为4,有四个元素空间...

c语言问题!int *p[4]和int (*p)[4]有什么区别?
int *p[4],就是p本质上是个数组,只不过数组中的每个元素都是指针 int (*p)[4],就是p本质上是个指针,指针指向一个一维的数组 这种题的话,其实可以先根据运算符的优先级、结合性,先确定标识符本质上是一个什么,然后再去补充 例如,int *p[3],先根据优先级,等效于*(p[3]),所以p...

C语言int (*p)[4]和int *p[4]区别
int *p[4], 是一个长度为4的指针数组,数组的元素为int*;sizeof(p) => 4*4 = 16;(32位系统一个指针4字节)用法:*(p[0])int (*p)[4] 是一个指向长度为4数组的指针,即int(*)[4];其本质是一个指针,如在32为系统上,sizeof(p) => 4 用法:(*p)[0]....

请问int *(p[4]) 和 int(*p)[4]的区别并举例
p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中 (*p)[4]是数组指针,他是指针并且是一个指向二维数组的指针。因为以行为单位,又称行指针。通俗点讲,后面的[4]说明他的每行有4个元素...

int (*p)[4]和 int a[4]; int *p=a;有本质区别么, int (*p)[4]如何...
后者相反,p是一个指针,指向一个int[4]的数组。所以归根结底,这里p是一个指针。那么,我的理解是,*p打印出来是这个int[4]的首地址,而不是这个数组里面的值。而且,p+1的话,地址相当于以int[4]为单位增加,而不是以int为单位增加。而,int *p=a这个例子,*p打印出来是a[0]里的值,故而...

相似回答