C语言学习笔记——指针:多级指针

本文深入解析了指针的指针概念,通过实例详细解释了二级指针的定义及使用,帮助读者理解如何通过二级指针间接访问内存单元。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针的指针: 如果一个指针变量存放的是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。
假如定义了一个二级指针:

int **q;

       对于上述例子的二级指针,我们可以把int **q拆分成两部分看:,即int*(*q),后面 (*q)中的 * 表示 q 是一个指针变量,前面的int*表示指针变量 q 只能存放int*型变量的地址。同理不管多少级的指针变量,它都是一个指针变量,指针变量就是一个*,其余的*表示的是这个指针变量只能存放什么类型变量的地址。
下面来举一个例子。假如定义了一个指针变量 p 指向一个 int 型变量:

int i = 10;
int *p = &i;
int **q = &p;

        int*p表示 p 指向的是int型变量,里面只能存放 int型变量的地址。 p是指针变量,它的地址也可以定义一个指针变量存放它:int **q = &p;
因为指针变量p的基类型为 int 型,所以 &p 的基类型为 int*型 。所以如果要定义一个能指向int* 型变量的指针变量,有两个要求:首先它要是指针变量,即一个*;其次,该指针变量指向的是 int* 型的数据,或者说存放的是 int* 型变量的地址,所以就是 int**
二级指针指针图例说明
        两个*表示二级指针,就是指针的指针。二级指针需要两个*才能指向最终的内存单元,即**q==i。变量 q中存放变量p的地址,又因为*q=p;即,存放的也是*q的地址,因为**q=*p=i,即变量 *q 或变量p中存放变量**q的地址,变量**q中存放i的内容,即 10。或者说:q指向 *q*q指向**q**q中存放i的内容,即 10。

参考文献:http://c.biancheng.net/view/225.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值