搜索
bottom↓
回复: 8

请教下C++里4个*号表示啥?

[复制链接]

出0入0汤圆

发表于 2020-3-15 00:24:51 | 显示全部楼层 |阅读模式
在别人的程序里看到了以下定义:
  1. typedef GridNode* GridNodePtr;
  2. GridNodePtr *** GridNodeMap;
复制代码

这好像意味着
  1. GridNode* *** GridNodeMap;
复制代码

那GridNodeMap是不是一个三维的数组,每个元素都是GridNode* 指针类型的变量?总感觉不太对呢

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入8汤圆

发表于 2020-3-15 00:24:52 | 显示全部楼层
楼主你多虑了,就是个多级指针:

以下代码帮助理解:

  1.     typedef short* GridNodePtr;
  2.     GridNodePtr*** GridNodeMap;

  3.     TRACE(traceAppMsg, 0, "sizeof(GridNodeMap) = %d.\n", sizeof(GridNodeMap));
  4.     TRACE(traceAppMsg, 0, "sizeof(*GridNodeMap) = %d.\n", sizeof(*GridNodeMap));
  5.     TRACE(traceAppMsg, 0, "sizeof(**GridNodeMap) = %d.\n", sizeof(**GridNodeMap));
  6.     TRACE(traceAppMsg, 0, "sizeof(***GridNodeMap) = %d.\n", sizeof(***GridNodeMap));
  7.     TRACE(traceAppMsg, 0, "sizeof(****GridNodeMap) = %d.\n", sizeof(****GridNodeMap));
  8.     //TRACE(traceAppMsg, 0, "sizeof(*****GridNodeMap) = %d.\n", sizeof(*****GridNodeMap));
复制代码


结果:
sizeof(GridNodeMap) = 8.
sizeof(*GridNodeMap) = 8.
sizeof(**GridNodeMap) = 8.
sizeof(***GridNodeMap) = 8.//以上几个级别都是指针类型
sizeof(****GridNodeMap) = 2.//这一级内容类型是实际的short

出0入0汤圆

发表于 2020-3-15 08:33:48 | 显示全部楼层
本帖最后由 yj_yulin 于 2020-3-15 08:35 编辑

这个确实就是个多级指针,没什么难的,但是这么用的人也是够绕的,这个语法C里面就有,不是C++特有

typedef GridNode* GridNodePtr; //GridNodePtr是一个指向 GridNode的指针
GridNodePtr *** GridNodeMap;  // 把这个按上面的形式分解下就行了
typedef GridNodePtr* GridNodePtr2
typedef GridNodePtr2* GridNodePtr3
GridNodePtr3* GridNodeMap

GridNodeMap是一个指针,指向GridNodePtr3,GridNodePtr3是一个指针,指向GridNodePtr2,GridNodePtr2是一个指针,指向GridNodePtr,GridNodePtr是一个指针,指向GridNode

出0入442汤圆

发表于 2020-3-15 12:02:44 来自手机 | 显示全部楼层
yj_yulin 发表于 2020-3-15 08:33
这个确实就是个多级指针,没什么难的,但是这么用的人也是够绕的,这个语法C里面就有,不是C++特有

typed ...

搞这么复杂,还不如用一个一维数组线性展开。。

出590入992汤圆

发表于 2020-3-15 12:12:47 | 显示全部楼层
最多用过三级指针:***p,常用二级指针**,和一级指针。
楼主:如果加上:三个const更难理解。

出0入0汤圆

 楼主| 发表于 2020-3-15 20:28:48 | 显示全部楼层
谢谢各位

出0入0汤圆

发表于 2020-3-15 21:58:04 | 显示全部楼层
从来没有这么用过,一般就用个1级指针,很少二级。搞复杂了自己都绕晕。

出0入8汤圆

发表于 2020-3-16 02:28:51 | 显示全部楼层
谢谢楼主了,还有加分,赞呀!

出0入0汤圆

发表于 2020-3-16 09:09:00 | 显示全部楼层
很少见,一般到2级指针,再多级指针就数组伺候了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-16 17:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表