3.4 三级指针

2023-11-04

char ***p=NULL;

注:1)可以通过三级指针间接的改变二级指针的指向

       2)*p表示,三级指针指向的二级指针中保存的内存地址

        3) 三级指针做函数参数时,主调函数需要传2级指针的地址。

        4) n级指针可以间接修改n-1级指针的指向

下面的例子通过函数调用来申请和释放内存来展示三级指针的用法:

void singnMemo1(char*** p, int num)
{
	int i;
	char** temp=NULL;
	if (p == NULL)
	{
		return;
	}
	temp= (char**)malloc(5 * sizeof(char*));
	for (i = 0; i < num; i++)
	{
		temp[i] = (char*)malloc(100 * sizeof(char));
		sprintf(temp[i], "%d%d%d", i,i, i);
	}
	*p = temp;//三级指针*p表示二级指针内存中保存的地址。
			//通过给*p赋值可以间接改变指针的指向
}
void freeMemo1(char*** p, int num)
{
	int i;
	char** temp = NULL;
	if (p == NULL)
	{
		return;
	}
	temp = *p;//相当于把实参的地址赋值给临时变量
	for (i = 0; i < num; i++)
	{
		if (temp[i] != NULL)
		{
			free(temp[i]);//断开连接
			temp[i] = NULL;//内存制空
		}
	}
	free(temp);
	*p = NULL;//实参制空
}
void main()
{
	int i;
	int num = 5;
	char** p;
	p = (char**)malloc(num * sizeof(char*));
	singnMemo1(&p, num);

	for (i = 0; i < num; i++)
	{
		printf("%s\n", p[i]);
	}
	freeMemo1(&p, num);
	system("pause");
	return;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3.4 三级指针 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData

随机推荐

  • 【自动驾驶】如何利用深度学习搭建一个最简单的无人驾驶系统

    新智驾按 本文为新智驾独家专栏 作者系佐思产研研究总监周彦武 新智驾经授权发布 国内最牛的无人驾驶厂家的运算平台是这样的 一个英特尔至强 E5 的 CPU 拥有 12 内核 30MB 的二级缓存 运算能力为 400GOPS s 功率消耗为
  • 【深入理解HTTP协议】破冰篇

    前言 本文将会引入HTTP的发展史 相关概念 相关协议 网络分层模型 域名 并搭建HTTP实验环境 参考课程为极客时间罗建锋老师的 透视HTTP协议 讲得很棒 强推 文章目录 1 HTTP协议的发展史 2 HTTP是什么 2 1 协议 2
  • flink-1.13.6提交sql到远程集群终于成功了

    java 1 8 flink 1 13 6 bin scala 2 11 hive 1 1 1 hadoop 2 6 0 cdh5 16 2 通过纯SQL的流模式提交到远程flink集群执行 中间遇到不少问题 现在终于能跑通了 附码云地址
  • Pysyft学习笔记一:dome思路

    Pysyft是一个比较适合学习FL学习小白的开源框架 相比与FATE的高封装性 Pysyft提供了更高的自由度 虽然FATE确实加密算法等等的效果做的非常的好 但是我在Ubuntu下面捣鼓了两天 下载了Mysql Redis等等的一堆东西
  • 设计模式状态模式uml_UML的完整形式是什么?

    设计模式状态模式uml UML 统一建模语言 UML Unified Modeling Language UML is an abbreviation of Unified Modeling Language In the field of
  • 【Mac】Mac安装telnet

    1 美图 2 安装 Homebrew 安装 Homebrew 3 安装 base lcc lcc github brew install telnet Updating Homebrew gt Downloading https homeb
  • linux tr命令用法详解

    tr命令用法详解 转自 https www cnblogs com bingguoguo articles 9188703 html tr命令可以对来自标准输入的字符进行替换 压缩和删除 它可以将一组字符变成另一组字符 经常用来编写优美的单
  • 系统架构演变历史及集群、分布式、微服务、SOA的概念区别

    文章目录 1 系统架构演变历史 1 单一应用架构 ORM 2 垂直应用架构 MVC 3 面向服务框架 SOA 4 微服务架构 1 微服务的特点 2 微服务主要解决的问题与场景 3 微服务的缺点 2 集群和分布式 微服务和soa概念和区别理解
  • 创业有哪些忠告?创业赚钱有哪些思维需要掌握?

    1 做买卖 要接到钱再干活儿 除非是你是在做自个的事 并且你确定将来会出现大收益 2 别做回款长的买卖 它对人的本性的考验太大 大部分人们在钱上的阻碍是挺大的 很多钱你是收不回家的 3 没想搞清楚运营模式 就不必自主创业 不然你将公司的铁架
  • 限制<textarea>文本框的字数长度以及设置右下角动态的字数显示

    平时无论在移动端还是PC端都会经常用到文本框 最常碰到的就是要对文本框里面的字数进行限制还有相对应的把剩余可输入的字数显示在右下角 要实现它并不是很难 直接上代码套用一下就ok了 HTML 因为我这里只用到了一小块地方 所以就直接把文本框C
  • 泛型是什么,为什么要用泛型

    泛型 泛型概述及优势 泛型 是JDK5 中引入的特性 可以在编译阶段约束操作的数据类型 并进行检查 泛型只能支持引用数据类型 集合体系的全部接口和实现类都是支持泛型的使用的 好处 统一数据类型 把运行时期的问题提前到了编译期间 避免了强制类
  • TensorFlow在MNIST中的应用-Softmax回归分类

    参考 TensorFlow技术解析与实战 http wiki jikexueyuan com project tensorflow zh tutorials mnist beginners html http www jianshu com
  • 7-2 一元多项式的乘法与加法运算 JAVA_MAP方案

    7 2 一元多项式的乘法与加法运算 30 分 题目要求 设计函数分别求两个一元多项式的乘积与和 输入格式 输入分2行 每行分别先给出多项式非零项的个数 再以指数递降方式输入一个多项式非零项系数和指数 绝对值均为不超过1000的整数 数字间以
  • PCB layout 注意事项

    过孔方面的注意事项 放置过孔时 放置过孔时 2个过孔之间的能走过一根信号线 注意美观横平竖直 过孔与焊盘的间距 PCB layout 时过孔与焊盘的间距 最好在6mil 1 524mm 以上 因为过孔一般不开阻焊 离焊盘太近会导致过孔露铜
  • BigDecimal中divide方法详解

    1 首先说一下用法 BigDecimal中的divide主要就是用来做除法的运算 其中有这么一个方法 public BigDecimal divide BigDecimal divisor int scale int roundingMod
  • 「Python 基础」异步 I/O 编程

    I O 密集型应用程序大大提升系统多任务处理能力 异步 I O 模型 一个消息循环 主线程在消息循环中不断重复 读取消息 处理消息 获取线程池 loop get event loop while True 接收事件消息 event loop
  • R语言实现个人信用风险评估(数据科学导引)

    1 案例背景 在很多国家 政府机构会密切监控贷款业务银行需要明确解释申请者的贷款申请被拒绝或者批准的原因 这种可解释性对于贷款申请者也是很重要的 在贷款申请被银行拒绝时 申请者需要知道为什么自己的信用级别不符合银行的要求 通过构建自动化的信
  • es脚本 实现字段之间进行比对

    script script source ctx source extra test lang painless query term user kimchy java BoolQueryBuilder boolQueryBuilder Q
  • 详解比较古怪的字符串拆分函数:strtok函数

    对于字符串中的标点符号 字符呀 如何能够当作分隔符来对原字符串进行分割呢 分割出来的为一段一段的字符 因此 在这里面就用到了 本文 比较古怪的字符串拆分函数 strtok函数 假设 对于这个字符串 woaini wangyijun com
  • 3.4 三级指针

    char p NULL 注 1 可以通过三级指针间接的改变二级指针的指向 2 p表示 三级指针指向的二级指针中保存的内存地址 3 三级指针做函数参数时 主调函数需要传2级指针的地址 4 n级指针可以间接修改n 1级指针的指向 下面的例子通过