请问 int *(p[4]) 和 int(*p)[4]的区别并举例

如题所述

)[4]、**p的区别(由于里面牵扯一些东西比较深,我简单的讲讲吧)

*p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中

(*p)[4]是数组指针,他是指针并且是一个指向二维数组的指针。因为以行为单位,又称行指针。
通俗点讲,后面的[4]说明他的每行有4个元素,[0]代表第一列的下标,[1]代表第二列的下标,一次类推。(*p)的意思是指针p指向第一行,*(p+1)即指向第二行,同理一次类推。那么*(p+2)[3]的意思即是指二维数组第二行第四列的元素

**p是二级指针,即指向指针的指针,他也是一个指针,主要区别在于应用的范围不同,行指针作用对象仅仅是二维数组,二级指针的应用范围就广了,比较典型的就是他可以用指针参数传递内存,指针数组和数组指针可没有这样的用法。也可以用他动态申请内存,存储二维数组元素等等

楼主耐心学习吧,只要坚持下去,这些东西都会慢慢理解的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-03
int *(p[4])是指针数组,数组内存放的是四个指针
int (*p)[4]是数组指针,数组内存放的整形,而p指向该数组。
第2个回答  2011-03-03
int *(p[4]) p[0-4]的值的类型都是 int* 这个就是 int* a[4] 把int*当作类型来看
int(*p)[4] p用来指向a[N][4]的数组 这样赋值: p = a 或者p= &a[i]
第3个回答  2019-05-28
有必要正本清源:
int *(p[4]) 就是数组 加个()而已 等同于 int * p[4]
int(*p)[4] 就是指针
简单明了

请问int *(p[4]) 和 int(*p)[4]的区别并举例
)[4]、**p的区别(由于里面牵扯一些东西比较深,我简单的讲讲吧)p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中 (*p)[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]是数组的指针,也就是说它shu是一个指针,指向的是一个数组。三、写法不同:一般用于向函数传递二维数组的时候使用这种类型,这时还有一种更直观的写法:void matrix_sum(int matrix_a[][4],int matrix_b[][4]) {...} 这种写法和void matrix_sum(int (*matrix_a)[4], int...

int(* p)[4]和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]的长度为...

int (*p)[4] 和 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]的长度为...

C语言中 int*p[4] 和 int(*p)[4]的区别是什么?
int(*p)[4]是数组的指针,也就是说它是一个指针,指向的是一个数组。指针指向的类型会影响到指针加减运算时地址的位移。比如说有一个数组 int a[4],加上取址运算符 &a,这个表达式的类型就是指向数组的指针,可以这样赋值 p = &a;。一般用于向函数传递二维数组的时候使用这种类型,这时还有一...

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

c语言中 int *p[4]和int (*p)[4]在定义和使用方面有什么区别? O(∩...
p[4]这指针数组,定义一个数组,里面存放的是指针。(*p)[4]定义的是一个指向一维数组的指针,这是一个指针,p++相当于p的地址相加了1*4 举例说明:include <stdio.h> void main(){ int a[2][2]={{1,2},{8,9}};int *p[4],(*q)[2];q=a;p[0]=&a[0][0];p[1]=&a[0...

int(*p)[4] int*p[4]
楼主你好。首先学习指针是有好多概念容易混淆。下面我来帮你区别一下:1、int(*p)[4];---ptr为指向含4个元素的一维整形数组的指针变量(是指针)2、int *p[4];---定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)3、int(*)[4];---实际上可以看作是一种数据类型。也就是第一...

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

相似回答