【C语言】指针的指针使用场景

前言

C 语言中,比较难理解的就是指针,完全搞懂了指针,那么C语言算是入了门。
指针中比较难理解的概念: 指针的指针
指针的指针,刚开始看到这个概念,感觉头疼。但是我们在程序里面应用一次就能搞懂。
本文通过使用指针的指针变量作为函数参数 获取一个内存地址,来理解指针的指针


1 . 指针作为函数参数

先来看一下 指针作为参数的作用

如果想要获取函数获取一个值,有两种方式:
(a)通过函数返回值,即return 返回值,一般最常用的。
(b)通过函数参数返回。
下面两个函数都设法通过函数参数 返回int型 数值 3,哪个函数能成功?

int i=0;
// 将参数V的值 变成3
void newInt(int v)
{v=3;
}
//将参数V的 变成3
void newInt2(int * v)
{*v = 3;
}

调用这两个函数测试一下

//指针的指针到底是干嘛用的呢。
#include <stdio.h>// 将参数V的值 变成3
void newInt(int v)
{v=3;
}//将参数V的 变成3
void newInt2(int * v)
{*v = 3;}int main()
{int i=0;printf("\n整型变量i的初始值    :%3d",i);newInt(i);printf("\n\n调用newInt()后的i值  :%3d",i);newInt2(&i);printf("\n\n调用newInt2()后的i值 :%3d",i);getchar();return 0;
}

在这里插入图片描述
这里得出一个结论:
想要改变整型参数的值,必须传递 整型指针
同理我们可以推断结论:
想要改变整型地址(整型指针)参数的值,必须传递必须传递 整型指针的指针


下面来验证一下

2. 指针的指针 作为函数参数

同样定义两个函数 void newIntPtr(int * v)void newIntPtr2( int **v):


//给参数v 获取一个新的内存地址
void newIntPtr(int * v)
{v = (int *)malloc(sizeof(int));;}//给参数v 获取一个新的内存地址
void newIntPtr2( int **v)
{*v = (int *) malloc(sizeof(int));
}

这两个函数哪一个能够成功的修改参数v的地址?

测试代码如下:

//指针的指针到底是干嘛用的呢。
#include <stdio.h>//给参数v 获取一个新的内存地址
void newIntPtr(int * v)
{v = (int *)malloc(sizeof(int));;}//给参数v 获取一个新的内存地址
void newIntPtr2( int **v)
{*v = (int *) malloc(sizeof(int));
}int main()
{int i=0;int * address= &i; //使用i的地址 初始化addressprintf("\n整型指针变量address的初始值 :%p",address);newIntPtr(address); //实际上这样使用,是错误的,因为在函数内部申请的地址,没有地方释放。printf("\n\n调用newIntPtr2后的address值 :%p",address);newIntPtr2(&address);printf("\n\n调用newIntPtr2后的address值 :%p",address);free(address); //释放address的内存getchar();return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何合并pdf文件到一个pdf

在现代办公和学习中&#xff0c;PDF格式的文件因其跨平台兼容性和安全性得到了广泛应用。然而&#xff0c;有时我们需要将多个PDF文件合并成一个&#xff0c;以便于管理和分享。本文将详细介绍几种合并PDF的方法&#xff0c;帮助读者轻松完成PDF文件的合并工作。 首先通过浏览器…

运营商二要素核验-手机号机主姓名核验接口-运营商二要素核验接口

通过电信运营商验证手机号码与姓名是否一致。广泛用于实名注册、风控审核等场景&#xff0c;如电商、游戏、直播、金融等需要用户实名认证的场景。支持携号转网核验。 更新周期&#xff1a;联通T1 电信T3 移动T3~5 均为工作日 接口地址&#xff1a; https://www.wapi.cn/api_de…

24V转5V降压芯片AH8642A:高效稳定的电源转换解决方案

### 24V转5V降压芯片AH8642A&#xff1a;高效稳定的电源转换解决方案 在电子设备日益增多的今天&#xff0c;电源转换效率和稳定性成为了设计中的关键因素。AH8642A是一款专为24V转5V设计的降压芯片&#xff0c;它以其高效率、宽输入电压范围和稳定的输出电压在电源转换领域脱颖…

JAVA:通过电信ctg.ag.sdk从电信物联平台AIOT获取设备上报数据的简单示例

一、问题场景 物联设备比如NB设备通过NB协议将数据传到电信平台后&#xff0c;我们的应用服务如何从电信平台获取可用的上报数据。以下通过电信开发者平台提供的SDK来简单演示下整个过程。 二、使用电信 SDK进行开发 电信AIOT物联平台提供了两种方式获取平台数据&#xff0c…

C语言 指针——字符数组与字符指针:字符串的表示与存储

目录 字符串常量 字符串变量&#xff1f; 字符数组的定义和初始化 字符指针的定义和初始化 将字符指针指向一个字符串 用字符数组保存一个字符串 将字符指针指向一个字符数组 使用字符指针的基本原则 使用指针的基本原则 字符串常量 字符串变量&#xff1f;  C 语言…

CSS动画(炫酷表单)

1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6yORMSqiaEKgpwibBgfcTQZNV0pI3M8t8HQm5XliaicSO42eBiboEUC3jxQOL1bRe0xlsd8bv04xXoKwg/640?wx_fmtgif&fromappmsg&wxfrom13 表单&#xff0c;也需要具有吸引力和实用性。HTML源码酷炫表单不仅能够提供给用户…

【lesson8】云备份服务端完整版代码

文章目录 util.hppconfig.hpphot.hppdata.hppserver.hppserver.ccMakefilecloud.conf util.hpp #pragma once #include <iostream> #include <fstream> #include <string> #include <vector> #include <sys/stat.h> #include <unistd.h> …

【零基础开始学习Linux】

学习Linux基础是一个循序渐进的过程&#xff0c;涵盖从基本命令到高级系统管理的多个方面。以下是一个详细的学习路径和资源推荐&#xff0c;帮助你从零基础开始学习Linux。 学习路径 1. 理解Linux基础概念 什么是Linux&#xff1a; 了解Linux的历史、不同的发行版以及其开源…

40. 【Java教程】数据库编程

本小节我们将学习如何使用 Java 语言结合数据库进行编程。注意&#xff0c;学习本小节需要你有一定的 SQL 基础&#xff0c;了解 MySQL 数据库的 基础 CRUD 操作。 本小节我们将选择开源免费的 MySQL 5.7 作为数据库&#xff0c;可以去官网下载并安装 MySQL。 通过本小节的学…

AI预测福彩3D采取888=3策略+和值012路或胆码测试6月13日新模型预测第3弹

今天咱们继续验证新模型的8码定位3&#xff0c;目前新模型新算法已连续命中2次。咱们重点是预测8码定位3&#xff0b;和值012胆码。有些朋友看到我最近两篇文章没有给大家提供缩水后的预测详情&#xff0c;在这里解释下&#xff1a;其实我每篇文章中既有8码定位&#xff0c;也有…

深入了解Laravel:PHP面试宝典

Laravel是目前最受欢迎的PHP框架之一,它以其优雅的语法和强大的功能深受开发者喜爱。在PHP开发的面试中,Laravel的知识点往往是重点考察的内容。本文将为你详细解析Laravel的核心知识点,帮助你在面试中脱颖而出。 一、Laravel简介 Laravel是一个基于MVC(模型-视图-控制器…

数据库学霸笔记

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

【MySQL】性能分析

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p78 查看执行频次 查看当前数据库的 INSERT, UPDATE, DELETE, SELECT 访问频次&#xff1a; SHOW GLOBAL STATUS LIKE Com_______; 或者 SHOW SESSION STATUS LIKE Com_______; 慢查询日志 慢查询日志记录了所有执行时间超过指…

【JVM】之常见面试题

文章目录 1.JVM中的内存区域划分2.JVM的类加载机制2.1 加载2.2 验证2.3 准备2.4 解析2.5 初始化2.6 类加载的时机 3 类加载器4.双亲委派模型5.JVM中的垃圾回收策略5.1 找谁是垃圾5.1.1 引用计数法5.1.2 可达性分析法 5.2 释放垃圾5.2.1 标记清除算法5.2.2 复制算法5.2.3 标记整…

CorelDRAW2024永久破解版下载安装全教程!

在设计领域&#xff0c;精准和专业是至关重要的要素。随着技术的飞速发展&#xff0c;设计师们对软件的选择也越发严苛。CorelDRAW 2024中文版及其2024终身永久版、破解版&#xff0c;因其强大的功能和便捷的使用体验&#xff0c;成为了设计师们的首选之一。本文将深入探讨这一…

网络编程入门

文章目录 网络编程入门计算机网络基础计算机网络发展史TCP/IP模型网络应用模式 基于HTTP协议的网络资源访问HTTP&#xff08;超文本传输协议&#xff09;JSON格式requests库 基于传输层协议的套接字编程TCP套接字UDP套接字 网络应用开发发送电子邮件发送短信 网络编程入门 计算…

大模型时代已至,产品经理如何紧跟时代步伐?

前言 在数字化浪潮的推动下&#xff0c;人工智能领域正迎来一场技术革命&#xff0c;而大模型技术的崛起无疑是这场革命中的明星。作为产品经理&#xff0c;我们不仅要洞察市场趋势&#xff0c;更要紧跟技术发展&#xff0c;以创新的思维和敏锐的洞察力&#xff0c;引领产品走…

C语言中各数据类型占用字节和值范围

64位编译器 数据类型占用字节值范围char1-128 ~ 127unsigned char10 ~ 255short2-32768 ~ 32767unsigned short20 ~ 65535int4-2147483648 ~ 2147483647unsigned int40 ~ 4294967295float41.17549435110^-38 ~ 3.40282346610^38double82.225073858507201410^-308 ~ 1.79769313…

git 常用的命令

git 常用的命令 一、基础命令1.1 初始化1.2 添加文件1.3 查看缓存区中的文件1.4 查看上次提交到缓存区中的文件1.5 文件从缓存区取出1.6 提交文件1.6 查看提交中包含的文件1.7 查看commit记录 二、回退命令2.1 git reset2.2 将文件从暂存区取出2.3 将文件从仓库取出2.3.1 保留工…

YOLOv5+单目测距(python)

YOLOv5单目测距&#xff08;python&#xff09; 1. 相关配置2. 测距原理3. 相机标定3.1&#xff1a;标定方法13.2&#xff1a;标定方法2 4. 相机测距4.1 测距添加4.2 细节修改&#xff08;可忽略&#xff09;4.3 主代码 5. 实验效果 相关链接 1. YOLOV7 单目测距&#xff08;p…