彻底理解c语言中int (*p)[3]和int *p[3]的意思 您所在的位置:网站首页 p:x是什么意思 彻底理解c语言中int (*p)[3]和int *p[3]的意思

彻底理解c语言中int (*p)[3]和int *p[3]的意思

2023-07-21 19:20| 来源: 网络整理| 查看: 265

int *p[3]是指针数组,这个数组有3个元素,每个元素都是指针。int (*p)[3]是指向一维数组的指针变量,就是这个指针指向了一个一维的数组。

int (*p)[3] 数组指针,p是一个指针,指向1个有3个变量的数组 int*p[3]指针数组,p是一个有3个元素的数组,每个元素的类型是整形指针

 

int *p[3]

这种定义方式是我们非常熟悉的一种。

可以看出,定义数组的 [] 的优先级还是要高于定义指针的 * 的优先级的,所以 int *p[3] 中,我们关注变量名 p,它首先被解释为一个数组,然后这个数组的内容(每一个元素)都是 int * 类型

image.png

 

int (*p)[3]

先说下结论:p 指向一个数组!

对于 int (*p)[3],我们关注的对象 p 首先被括号括了起来:(*p),所以它首先被解释成了一个指针,而这个指针指向的内容,则是括号外所表示的内容:int [3],即一个长度为 3 的数组,所以指针 p 指向一块内存区域(请把它指向的内容看做一个整体)

image.png

 

与数组对比,有一些更有意思的发现,如:

 

int q[3]; int* p1 = q; int (*p2)[3] = &q; // &q 的数据类型是 int (*)[3],实际上是吧全体数组元素当做一个整体来看待 std::cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有