指针的指针

C语言中指针数组和指向指针的指针详解 指针数组(Array of Pointers)是一种特殊的数组,其中每个元素都是一个指针。指针数组通常用于处理字符串数组、动态数组等复杂数据结构。数据类型 *数组名[数组大小];指向指针的指针(Pointer to Pointer)是一个指针,它指向另一个指针。它通常用于处理多级间接引用和复杂的数据结构。数据类型 **指针名;int **p;指针数组和指向指针的指针是C语言中两个重要的概念。它们在处理动态数组、多级数据结构和复杂算法时非常有用。 阅读详情

如果想详细地理解指针,一定要理解地址与内容的关系。

在这之前,一定要了解内存和地址的意义:

        1.内存中的每个位置都由一个独一无二的地址标识

        2.内存中的每个位置都包含一个值。

一.地址与内容的关系

图示是内存中的存储的5变量的值,假设在内存中已经创建了内存空间并存储了数值:

        变量a的地址是100,变量b的地址是104,变量c的地址是108,变量d的值是112,变量e的地址是116.

 

 C/C++中通过名字访问内存的位置,不是直接访问内存的地址。名字与内存之间的关联不是硬件提供的,而是通过编译器来实现的。 所以变量提供了一种更方便的方法记住地址。

二.指针变量的内容

1.指针变量的定义

对于如下的数值操作:

 变量d和变量e 都被声明为指针, 并用其他变量的地址予以初始化。  

指针的初始化是用&操作符完成的,它用于产生操作数的内存地址。

指针变量d,e在内存中 存储的是地址 。指针变量 d在内存中存的是地址值100,指针变量e在内存中存的是地址值108.

 一个变量的值就是分配给这个变量的内存位置所存储的数值。指针变量存储的是分配的地址的数值。

 2.间接访问

 通过一个指针访问它所指向的地址的过程称为间接访问 或 解引用指针。  使用单目操作符* 执行间接访问。

指针变量可以作为左值并不是因为它们是指针,而是因为它们是变量。

比如:   int a ;    int* d = &a;

三.指针的指针

有如下变量的定义:

 

 对于第三个变量c  ( int** 类型 ),使用b的地址对它进行初始化。

变量 a,b,c  在内存中存储的值,如下图所示:

 

c的类型是什么?  显然它是一个指针,是“指向整型的指针”的指针。

声明 int  **c;  

表示表达式**c的类型是int。    *操作符具有从右向左的结合性,所以这个表达式相当于*(*c),我们必须从里向外逐层求值。

在编译器中执行的结果如下所示:

 

四.总结

明确无论是指针变量, 还是 指针的指针 变量,它们都是变量。 通过变量名可以访问,在内存中,存储的变量的数值(地址 或 某种类型的数值)。

 

 

 

 

 

二叉树的建立中指向指针的指针的运用 刚开始学C语言,对指针不是很了解,这两天看《大话数据结构》中二叉树的建立那里,运用了指向指针的指针,迷茫了一天,现在终于有了一点点思路,赶紧记录下来。在网上查了一句话:如果希望在一个函数的参数中改变一个指针的值,只能传这个指针的指针给这个函数。我理解的意思就是,如果我们调用函数时传入一个指针参数,我们在这个函数中不能修改这个指针的值,只能修改这个指针指向的内容,如果想要修改它的值,就必须把这个指针 阅读详情

相关推荐

使用指向指针的指针对字符串排序

1 题目 函数:sort() 功能:使用指向指针的指针对字符串排序 描述: 使用指向指针的指针对字符串排序,输出是按照字母顺序进行排序 2 思路 a. 熟悉指向指针的指针的使用 char *nums[]={"", ""}; char **p; p = nums; 熟悉 *p 指向的是 nums[0] 的首地址 b. 引用模块#include <string.h> 使用函数 int strcmp(const char *str1, const char *st

md102938的博客 1454

指针的指针、字符串和指针、数组指针(详)

指针的指针、字符串和指针、数组指针(详)

weixin_48102054的博客 4383

解决uc浏览器劫持video标签问题

解决uc视频悬浮播放 ,video标签被浏览器劫持 ,vide0适配

smile_y_y的博客 3450

04、指针的指针(二级指针)

文章目录1、二级指针基本概念2、二级指针做形参输入特性3、二级指针做形参输出特性4、强化训练_画出内存模型图5、多级指针 1、二级指针基本概念   下面看这个例子: int a = 12; int *b = &a; 它们如下图进行内存分配:   假定我们又有了第3个变量,名叫c,并用下面这条语句对它进行初始化: c = &b;   它在内存中的大概模样大致如下:   问题是:c 的类型是什么?显然它是一个指针,但它所指向的是什么?变量b是一个“指向整型的指针”,所以任何指向b的类型必

嵌入式羊圈 2476

别再手动连线了!用Tessent IJTAG的SIB和TDR,5分钟搞定复杂芯片的DFT网络分区

本文探讨了如何利用Tessent IJTAG的SIB(Segment Insertion Bit)和TDR(Test Data Register)技术,高效解决复杂芯片DFT网络分区问题。通过智能化的扫描链管理和声明式定义,显著降低连接复杂度,提升测试覆盖率和良率,适用于超大规模SoC设计。

weixin_29251131的博客 301

Field _II 仿真 学习笔记

参考Field II的使用说明,进行了四个例子的练习。仿真程序和结果如下: PURPOSE1:Calculate the received response from all elements of a linear array and plot the responses and the summed response 【计算来自所有线性阵元的接收响应,并绘制该响应以及叠加响应。】 >>

qq_34018578的博客 1万+

c语言指针的指针

指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。C 中指向指针的指针一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:int **var;......

如山石的系统虚拟化之路 3847

Java对接快递鸟,查询快递物流信息

根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递API接口,实现自动查询的功能。下面是java版本的根据单号查询物流跟踪信息的详细示例代码。只需要下载就可以运行,(自己需要简单的修改)注:登录快递鸟用户管理后台后获得。登录快递鸟用户管理后台。

Roc的博客 958

指针的指针是个啥

指针的指针是指一个指针变量,它存储的是另一个指针变量的地址。换句话说,指针的指针就是指向指针的指针。这种数据结构在C语言中非常常见,主要用于实现动态内存分配和函数参数传递。

weixin_44205236的博客 2283

STM8库函数开发手册(3) //UART1、内部EEPROM、FLASH操作库、IIC(硬、软)

STM8S 微控制器家族的通用同步异步收发器(UART1,UART2 或者UART3)提供了一种灵活的方法与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。STM8 的UART 提供范围的波特率选择,并且支持多处理器通讯。UART 也支持LIN(局部互联网)协议版本1.3,2.0,和2.1 以及在主模式下的J2602。 UART1 和UAR...

finedayforu的博客 2522

告别模糊与偏色:使用RKISP Tuner为RK3588s+IMX415进行图像质量调优的实战心得

本文详细介绍了如何使用RKISP Tuner为RK3588s+IMX415进行图像质量调优的实战经验。从调试环境搭建到3A算法优化,再到画质增强模块的深度调参,提供了全面的技术指导和参数建议,帮助工程师解决噪声、色偏和细节模糊等常见问题,显著提升成像质量。

weixin_28729205的博客 455

指针的指针(简单易懂)

int a = 12; int *b = &a; 内存的分配如下 这时再来一个变量 c = &b; 问题来了? c 是什么类型? b 是指向整型的指针 ,c 是指向整形指针的指针? 是的 c 是指向指针的指针 声明如下 int ** c; int a = 12; int *b = &a; int **c = &b; 来分析一下最后一行这个表达式 int **...

shenmingyi.blog.youkuaiyun.com 1万+

[低代码 + AI] 明道云与 Dify 的三种融合实践方式详解

融合方式技术路径优点局限或注意事项UI 嵌入iframe 表单嵌入快速集成、用户体验一致无法自定义交互逻辑明道云调用 DifyAPI 请求节点工作流自动化、逻辑灵活有 timeout 限制、需优化 promptDify 调用明道云插件或 API 调用节点可查询实际业务数据、增强 AI 智能需理解明道云 API 结构、权限设置复杂明道云与 Dify 的结合为低代码平台注入了智能动力。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1187

指向指针的指针

指向指针的指针!!(能让初学者绕晕的东西) 如果一个指针变量存放的又是另一个指针变量的地址,则称这个变量为指向指针的指针变量或指向指针的指针。 定义方式: 数据类型 **变量名; int a=10; //地址为&amp;a int *p=&amp;a; //指针地址为&amp;p 如果是p就是a的地址 int **p1=&amp;p; //指针地...

masterli1688的博客 2万+

库存优化技术提升电商效率

第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性

AI天才研究院 1248

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

指向指针的指针的用途

在阅读apache的源码时,发现一处使用指针的指针的案例,平时没有够多考虑指向指针的指针这个问题,今天顺便理解了一下,这里沾上apache的源码,这时apr一个很经常用的函数,就是根据字符串的中断值来获取中断值隔开的字符串,比如“T=0&L=1&X=2&Y=3”,这个函数可以通过‘&’来获取T L X Y的值,它会将开始的字符串地址输入str,中断值输入为sep,last是中断值后面字符串开始的地

仰望星空 4027

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C语言 指针数组和指向指针的指针

针对自己在学习指针知识的时候比较难理解,特意整理出来,防止后面忘了,也拿出来供大家理解 指针数组的概念: 一个数组的元素值为指针则是指针数组。 指针数组是一组有序的指针的集合。 指针数 组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。 指针数组说明的一般形式为:类型说明符 *数组名[数组长度] 其中类型说明符为指针值所指向的变量的类型 指针数组类型表示的是多个指针(一组有...

tingguan的博客 9929

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

指针的指针有什么用

指针的用处我知道 比如 int p[3]; int* x=&p x作为p的索引 那么指针的指针呢,既然它出现在c中肯定有用,可是我实在不知道有什么用,难道对指针进行索引,索引的索引? 答: 我给楼主一个最直接的理由:那就是如果你希望在一个函数的参数中改变一个指针的值,你就只能传这个指针的指针给这个函数。 比如有int *p; 而你想在函数f中对其增量,就只好: voi

ProveYourself的博客 6899

为什么要用指针的指针?

指针的指针在数据结构中很常见,前几天才弄懂为什么要指针,今天又出了个指针的指针...看看下面这段代码把 #include <stdio.h> #include <stdlib.h> void change(int *a){ int *b; b = (int *)malloc(sizeof(int));//b:0xbb3cb0,b分配到一段内存,也是一个...

weixin_44780694的博客 1425

指向指针的指针使用

u8 p=9; u8 y=7; void getdata(u8 **d) { *d = &p; } u8 *getelen(void) { return &y; } int main(int argc, char *argv[]) { u8 *d=NULL; u8 *len; getdata(&d); printf("%d,%d,%d\n",&d,d,*d); le...

wwzxc88的博客 2338

C++中指向指针的指针的作用

1 前言 C++中一个指针的使用就已经让很多人欲哭无泪,可是更不幸的是他还有指向指针的指针。指向指针的指针有时候还是非常有用的,我们这节就来介绍一下,指向指针的指针有什么妙用。 2 作用1:在子函数中修改主函数传过来的指针的指向 这是一个最常见的应用,比如: 比如主函数申明一个指针变量,且不为其分配指向空间(只是指向NULL),然后取该指针变量的地址传参给子函数; 在子函数里根据需要申请一片空间...

Lavi的专栏 1万+

[C++] 指向指针的指针

[C++] 指向指针的指针

weixin_60479183的博客 1263

指针与指针的指针

指针与指针的指针,本质上来看,两者都是存储地址,体现在语言特性上来看的话,一个是一层指针,一个是二层指针。

春夜喜雨的专栏 1842
上一篇: 跳表的原理与实现 [图解]
下一篇: void* 指针
Monkey Ji
博客等级 码龄9年 113粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值