c语言问题!int *p[4]和int (*p)[4]有什么区别?

如题所述

int *p[4],就是p本质上是个数组,只不过数组中的每个元素都是指针
int (*p)[4],就是p本质上是个指针,指针指向一个一维的数组

这种题的话,其实可以先根据运算符的优先级、结合性,先确定标识符本质上是一个什么,然后再去补充

例如,int *p[3],先根据优先级,等效于*(p[3]),所以p本质上是一个有三个元素的数组;那么数组的每个元素又是什么呢?是一个指针;那指针指向的又是什么呢?是指向一个int型的数据;所以整理一下就是p是一个有三个指向int数据的指针的数组,本质上就是一个数组
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-30
int *p[4]是定义了一个四个元素的数组,元素类型为int的指针
后一个是定义了一个int指针,指向内存中4个int大小一块区域的首地址,以四个int单位
如p++,是移动4
第2个回答  2014-04-02
前者指针数组,后者数组指针

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]什么区别
前者是指针数组,为4个int指针的数组,有4个元素 后者是数组指针,为一个指针,类型为指向包含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]的长度为...

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

C语言中 int*p[4] 和 int(*p)[4]的区别是什么?
int*p[4]是指针的数组,也就是说它是一个数组,数组里存的是一个个的指针 int(*p)[4]是数组的指针,也就是说它是一个指针,指向的是一个数组。指针指向的类型会影响到指针加减运算时地址的位移。比如说有一个数组 int a[4],加上取址运算符 &a,这个表达式的类型就是指向数组的指针,可以...

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]...

C语言的指针的问题。 int (* P)[4];和int * p[4]有什么区别。
int *p[4]由于[]比*优先级更高,因此p先与[4]结合,形成p[4]的形式,这显然是数组形式。然后再与p前面的*结合,*表示次数组是指针类型的,每个数组元素都指向一个整型变量。数组指针 数组指针是指向数组的一个指针,如 int (*p)[4]表示一个指向4个元素的数组的一个指针。typedef int (* ...

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]的区别并举例
)[4]、**p的区别(由于里面牵扯一些东西比较深,我简单的讲讲吧)p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中 (*p)[4]是数组指针,他是指针并且是一个指向二维数组的指针。因为以...

相似回答