鱼C论坛

 找回密码
 立即注册
查看: 1382|回复: 3

[已解决]类型后面加个**是什么

[复制链接]
发表于 2021-9-4 20:40:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
using namespace std;

struct aye {
        int year;
};

int main() {
        aye s1, s2, s3;
        const aye * arp[3] = {&s1, &s2, &s3};
        const aye ** ppa = arp;
        return 0;
}
1. 请问const aye ** ppa是什么意思?
2. aye *是指针,aye **是什么?
3. 为什么ppa的类型是aye **?
最佳答案
2021-9-4 21:01:16
本帖最后由 jackz007 于 2021-9-4 21:03 编辑
const aye * arp[3] = {&s1, &s2, &s3} ; // 定义有 3 个元素的指针数组 arp[],并初始化其 3 个元素分别为结构体 s1、s2、s3 的内存地址;

const aye ** ppa = arp               ; // 定义 ppa 为指向结构体指针的指针,并初始化 ppa 指向指针数组 arp 的起始地址,这样,* ppa、* (ppa + 1)、* (ppa + 2) 就是分别指向 s1、s2、s3 的指针,而** ppa、** (ppa + 1)、** (ppa + 2) 则分别代表结构体 s1、s2、s3 本身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-4 20:58:50 | 显示全部楼层
1.
定义了一个指针变量 ppa
2.
aye ** 还是指针,指向指针的指针
3.
因为等于号右边的 arp 的类型是 aye **
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 21:01:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-9-4 21:03 编辑
const aye * arp[3] = {&s1, &s2, &s3} ; // 定义有 3 个元素的指针数组 arp[],并初始化其 3 个元素分别为结构体 s1、s2、s3 的内存地址;

const aye ** ppa = arp               ; // 定义 ppa 为指向结构体指针的指针,并初始化 ppa 指向指针数组 arp 的起始地址,这样,* ppa、* (ppa + 1)、* (ppa + 2) 就是分别指向 s1、s2、s3 的指针,而** ppa、** (ppa + 1)、** (ppa + 2) 则分别代表结构体 s1、s2、s3 本身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-4 21:04:36 | 显示全部楼层
int *p;
这是一个指向 int 类型的 名字叫 p 的指针,这你知道吧,

aye* *ppa 不就是名字叫 ppa 的指向 aye* 类型的指针吗?

结合你的代码,aye* 类型不就是 arp[3] 这个数组的类型吗?

也就是说这个 ppa 指针指向的不就是 arp 的第一个元素吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 17:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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