c语言的指针,以及指针套指针

2023-11-16

1.对于指针的理解

在C语言中,指针是一种特殊的数据类型,它用于存储变量的内存地址。通过指针,可以直接访问和修改变量的值,而不需要知道变量的名称。

下面是一个例子来理解指针的概念:

#include <stdio.h>

int main() {
    int num = 10;  // 定义一个整数变量num,赋值为10
    int *ptr;     // 定义一个整型指针变量ptr

    ptr = &num;   // 将ptr指向num的地址

    printf("Value of num: %d", num);       // 输出num的值
    printf("Address of num: %p", &num);    // 输出num的地址
    printf("Value of ptr: %p", ptr);       // 输出ptr指向的地址
    printf("Value at ptr: %d", *ptr);      // 输出ptr指向地址的值

    return 0;
}

在上述代码中,首先定义了一个整数变量num,并赋值为10。然后,声明了一个整型指针变量ptr。

通过将ptr指向num的地址,可以使用*操作符来访问ptr指向的地址中存储的值。在示例中,*ptr表示ptr指向的地址中存储的值,即num的值。

输出结果为:

Value of num: 10
Address of num: 0x7ffeed1b6a14
Value of ptr: 0x7ffeed1b6a14
Value at ptr: 10

通过指针,我们可以直接访问变量的值和地址,以及通过指针修改变量的值。指针在C语言中非常有用,特别是在需要传递大型数据结构或动态分配内存时。

2.如何理解C语言中的指针套指针

在C语言中,指针套指针指的是一个指针变量存储另一个指针变量的地址。通过指针套指针,我们可以实现多级间接访问,即通过多个指针层级来访问或修改变量的值。
下面是一个例子来理解指针套指针的概念:

#include <stdio.h>
int main() {
int num = 10;         // 定义一个整数变量num,赋值为10
int *ptr1;           // 定义一个整型指针变量ptr1
int **ptr2;          // 定义一个指向整型指针的指针变量
ptr1 = &num;         // 将ptr1指向num的地址
ptr2 = &ptr1;        // 将ptr2指向ptr1的地址
printf("Value of num: %d", num);            // 输出num的值
printf("Address of num: %p", &num);         // 输出num的地址
printf("Value of ptr1: %p", ptr1);          // 输出ptr1指向的地址
printf("Value of ptr2: %p", ptr2);          // 输出ptr2指向的地址
printf("Value at ptr1: %d", *ptr1);         // 输出ptr1指向地址的值
printf("Value at ptr2: %p", ptr2);         // 输出ptr2指向地址的值
printf("Value at ptr1 (via ptr2): %d", **ptr2);   // 输出通过ptr2间接访问ptr1指向地址的值return 0;}在上述代码中,我们声明了一个整型指针变量ptr1和一个指向整型指针的指针变量ptr2。通过将ptr1指向num的地址,再将ptr2指向ptr1的地址,我们就建立了指针套指针的关系。通过ptr2可以访问ptr2指向的地址中存储的值,即ptr1的地址。进一步通过ptr2可以访问ptr1指向的地址中存储的值,即num的值。

输出结果为:
Value of num: 10
Address of num: 0x7ffeed1b6a14
Value of ptr1: 0x7ffeed1b6a14
Value of ptr2: 0x7ffeed1b6a18
Value at ptr1: 10
Value at ptr2: 0x7ffeed1b6a14
Value at ptr1 (via ptr2): 10
通过指针套指针,我们可以实现多级间接访问,这在某些情况下非常有用,例如在链表和树等数据结构中。

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

c语言的指针,以及指针套指针 的相关文章

  • 图的深度优先遍历(Depth First Search)

    图的深度优先遍历 Depth First Search 基本思想 类似于二叉树的先序遍历 假设图中所有结点均未被访问 从初始结点访问 访问其第一个邻接结点 接着以被访问的邻接结点作为初始结点 访问它的第一个邻接结点 递归的过程 算法步骤 访
  • Cesium快速入门

    Cesium是全世界使用最广泛的3D WebGIS引擎 国内有若干个GIS厂家的3D GIS引擎也是基于Cesium进行开发 随着国家 新基建 数字化 战略的不断发展深化 越来越多的城市数字化项目需要用上3D GIS引擎 对Web端而言 C
  • 简单记录搭建SSM(Spring+Spring MVC+Mybatis)整合

    业务层 View 数据显示 Controller 业务控制 执行成功怎么处理 执行失败怎么处理 Service 业务处理 Model 数据库相关实体类 增删改查 工程搭建 第一步 创建Maven web工程 点击finish创建完毕工程 第
  • C++在路径下新建一个指定名称的文件夹

    在保存数据是 我们希望将新生成的数据单独保存在一个文件夹中 其实我们可以通过程序自动生成一个指定名称的文件夹 存放数据 而不必提前手动新建文件夹并修改名称 代码实现的方法也很简单 但是需要注意的是该方法需要包含windows h头文件 代如
  • 树莓派——制作静态库、动态库

    库的特点 库是可执行代码的二进制形式 即将源代码转换成二进制的源代码 相当于对源代码进行了加密 别人可以看见库使用库 但是看不见库的源代码 2种类型库 静态库 libxxx a 动态库 libxxx so 静态库 在程序执行前就加入到目标程

随机推荐

  • Spring IoC是什么

    IoC是什么 Ioc Inversion of Control 即 控制反转 不是什么技术 而是一种设计思想 在Java开发中 Ioc意味着将你设计好的对象交给容器控制 而不是传统的在你的对象内部直接控制 如何理解好Ioc呢 理解好Ioc的
  • FDTD solutions——TFSF(全场散射场)光源及斜入射

    每天一遍 防止忘记 初始建立仿真文件 1 建立物理结构 几何结构 材料特性 2 定义仿真区域 边界条件 3 设置激励源 光源 4 设置监视器 至少使用一个时间监视器 分析组 只记录需要的数据 运行与仿真 1 运行仿真文件 分布式并行运算 并
  • 深度学习中的目标识别

    博主简介 博主是一名大二学生 主攻人工智能研究 感谢让我们在CSDN相遇 博主致力于在这里分享关于人工智能 c Python 爬虫等方面知识的分享 如果有需要的小伙伴可以关注博主 博主会继续更新的 如果有错误之处 大家可以指正 专栏简介 本
  • 车联网企业排行榜

    1 为紧跟车联网行业发展动态 聚焦优质市场主体 中国价值公司100排行榜之车联网企业排行榜从经营分析 发展能力以及社会责任三个维度对30家车联网重点企业进行综合评分 2 车载信息服务领域 市场主体多样 角色多元 以百度 腾讯 博泰 四维图新
  • K8s-yaml的使用及命令

    YAML配置文件管理对象 对象管理 创建deployment资源 kubectl create f nginx deployment yaml 查看deployment kubectl get deploy 查看ReplicaSet kub
  • 超详细OpenStack一键式部署

    1 准备镜像文件 Cen1 创建新的虚拟机 1 创建虚拟机 点击关闭 2 安装Centos7 密码自己设置 不用跟着一样 2 生成动态IP地址 root localhost dhclient 3 查看生成的IP地址 root localho
  • Windows安装子系统Linux

    Windows安装子系统 Linux ubuntu 安装条件 步骤 1 安装WSL命令 2 设置Linux用户名和密码 3 写个简单的 c程序看看 4 如何互传文件 安装条件 Windows 10版本2004及更高的版本才能安装 步骤 1
  • 多模态中的指令控制(InstructPix2Pix,SayCan)

    InstructPix2Pix Learning to Follow Image Editing Instructions 图像的语言指令生成 目的是遵循人工指令去编辑图像 即给定输入图像和一个如何编辑它的文本指令 模型尝试遵循这些指令来编
  • 数据治理:数据治理之道-数据文化-数据思维融入企业文化

    参考 一本书讲透数据治理 数据治理 等 大数据的根本价值在于从数据的不确定性中发现规律 获得确定性 想要在繁杂的大数据中快速找到价值数据 并依靠数据发现 分析 解决 跟踪问题 企业必须有数据思维与数据文化 数字转型 文化先行 数字化趋势下
  • Node.js学习笔记

    一 初识Node js 1 Node js是什么 1 Node js是一个基于Chrome V8 引擎的 JavaScript 运行环境 2 Node js官网 http nodejs cn 2 运行环境 注意 浏览器是JavaScript
  • 运放相位(频率)补偿电路设计

    集成运放的内部是一个多级放大器 其对数幅频特性如图 1所示中的曲线 实线 对数幅频特性曲线在零分贝以上的转折点称为极点 图中 称P1 P2点为极点 极点对应的频率称为转折频率 如fp1 fp2 第一个极点 即频率最低的极点称为主极点 在极点
  • Java实现远程调试

    https www cnblogs com wwywwy p 9626078 html 远程调试 主动连接调试 服务端配置监控端口 本地IDE连接远程监听端口进行调试 一般调试问题用这种方式 被动连接调试 本地IDE监听某端口 等待远程连接
  • 分段和分页内存管理

    两者描述 打个比方 比如说你去听课 带了一个纸质笔记本做笔记 笔记本有100张纸 课程有语文 数学 英语三门 对于这个笔记本的使用 为了便于以后复习方便 你可以有两种选择 第一种是 你从本子的第一张纸开始用 并且事先在本子上做划分 第2张到
  • 数据结构笔记:PR四叉树

    1 基本介绍 在PR四叉树中 每个节点代表一个矩形区域 并且每个节点要么没有子节点 要么有四个子节点 分别代表该矩形区域的四个象限 2 数据结构 PR四叉树的每个节点通常包含以下几个元素 区域 矩形 节点所代表的二维空间范围 点 存储在该区
  • 零售超市如何应对消费者需求?非常全面!

    随着科技的飞速发展和消费者期望的不断演变 零售行业正经历着一场深刻的革命 传统零售模式逐渐被新零售模式所取代 而其中一个备受关注的元素是自动售货机 自动售货机不仅在商场 车站和办公楼等高流量地点迅速扩张 还在重新定义我们如何购物 何时购物以
  • js数组转tree

    数组转 tree目前发现就三种方式 js版本实现了三种 初始化数据 let arr name 李四 id 2 pid 0 name 王五 id 3 pid 0 name 赵六 id 4 pid 3 name 吗六 id 9 pid 3 na
  • Latex编辑器Texstudio的快捷键汇总(更新)

    Latex编辑器Texstudio的注释快捷键 注释 Ctrl T 去除注释 Ctrl U
  • 语音识别之端点检测

    在之前呢我们已经把portaudio平台搭好了 可以采集声音信号并播放了 那么接下来呢我们就来做一些实质性的东西 自适应端点检测 那么什么是自适应端点检测呢 也就是采集声音信号的时候 开始说话到说话结束 我们把这一段声音信号采集下来进行处理
  • Java服务端返回json

    1 pom xml文件导入jar包
  • c语言的指针,以及指针套指针

    1 对于指针的理解 在C语言中 指针是一种特殊的数据类型 它用于存储变量的内存地址 通过指针 可以直接访问和修改变量的值 而不需要知道变量的名称 下面是一个例子来理解指针的概念 include