栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

结构体 指针 多级指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

结构体 指针 多级指针

日后还会完善~

#include
typedef struct node
{
    int data; //struct类型变量 内部成员 单个 目的方便研究 一百个也一样效果 多且麻烦
}L;
void main(void) 
{
        L l = {90};
        L*ll = &l;
        L**lll = ≪
        printf("结构体变量l地址:%p ",&l );
        printf("结构体类型一级指针箱 ll 内部存储的地址:%p ",ll);
        printf("结构体类型一级指针箱 ll 本身的地址:%p ",&ll);
        printf("结构体类型二级指针箱 lll 内部存储的地址:%p ",lll);
        printf("结构体类型二级指针箱 lll 本身的地址:%p ",&lll);
        printf("获取struct类型变量l内容data 2种方式:%d %d ", l.data,ll->data);
        printf("获取struct类型一级指针变量 ll 箱内部data 3种方式:%d %d %d ", ll->data, (*ll).data, (*&ll)->data );
        printf("获取struct类型二级指针变量 lll 箱内部data 4种方式:%d %d %d %d ",(*lll)->data,(*(*lll)).data,(*(*&lll))->data, (*(*(*&lll))).data );
    printf("最后一层箱子里变量地址:%p 存放的data %d ",&(*(*(*&lll))),(*(*(*&lll))).data);
} //指针本身就是地址,指针变量内部存放另一个变量的地址,所以指针变量也叫指针箱或地址箱

// *在定义指针变量的时候是指针的标志 *在后面应用的时候,是解引用符号,一个钥匙 目的是解开指针箱的地址锁 取得内部内容

// 多级指针箱 应用输出的时候 箱子里面装箱子 类似递归但完全不是递归

// 指针箱 这个名字很棒 通俗易懂 指针箱==地址箱 怎么称呼都可以 指针箱==指针变量。

// == 等价的意思

// !!!思路: 二级地址箱lll 内部 存放了 一级地址箱ll 的地址,那么我们解引用,用*钥匙打开二级地址箱lll的包装,包装的意思就是他的地址,得到一级地址箱ll的地址,也就相当于找到了一级指针箱ll,也就是指针变量ll,那么结构体指针通过->访问结构体成员所以 (*lll)==ll, 如果我们在对一级指针箱ll使用*解地址,解开一级指针箱ll的包装,得到struct类型变量l的地址,也就是找到了这个struct类型变量,那么结构体普通变量访问(*(*lll)).data==l.data。

//  part1一定要知道指针箱里装的是什么,以及这个指针箱的包装(也就是指针箱本身的地址)

// part2 一定要知道 地址箱 以及 地址箱的包装 : (单独的一个地址箱 表示这个箱子里装的地址) (地址箱的包装:&地址箱,获取地址箱本身的地址,也就是包装)

// part3 得到了地址的意思 就相当于知道了这个变量的位置,得到指针箱的地址,就是得到了这个指针变量。

// 二级地址箱里存放一级地址箱子,用*解引用 打开二级地址箱 得到里面的一级地址箱 ,再次*解引用 打开一级地址箱 得到里面的变量地址。

最后程序的输出

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号