当前位置: 首页 > news >正文

详解C语言中的指针数组和数组指针

指针数组和数组指针是 C 语言中比较常见的两种类型。它们虽然名字很相似,但是含义、用法以及指向类型都不同,需要分开理解。

指针数组

指针数组是一个数组,其中每个元素都是一个指针。这些指针可以指向不同类型的数据,也可以指向相同类型的数据。例如,下面是一个包含 3 个指针的指针数组,其中每个指针指向一个整数:

int a = 1, b = 2, c = 3;
int* ptr_array[3] = {&a, &b, &c};

上面这个指针数组 ptr_array 包含 3 个元素,每个元素都是一个指向整数的指针。这些指针分别指向变量 a、b 和 c 的地址。我们可以通过下标访问这些指针,进而访问到相应的整数:

printf("%d %d %d\n", *(ptr_array[0]), *(ptr_array[1]), *(ptr_array[2]));

上面这行代码输出 1、2 和 3,分别对应变量 a、b 和 c 的值。

需要注意的是,指针数组中的每个元素都是一个指针,因此当我们想要使用指针数组的元素时,需要通过解引用运算符 * 来获取它所指向的值,例如上面的 *(ptr_array[0])。

数组指针

数组指针是一个指针,它指向一个数组。它也可以指向不同类型的数组,例如整数数组、字符数组等。我们可以使用数组下标运算符 [] 来访问指针所指向的数组中的元素。例如,下面是一个指向 3 个整数的数组的指针:

int array[3] = {1, 2, 3};
int (*ptr_array)[3] = &array;

上述代码中,ptr_array 是一个指向 3 个整数的数组的指针。我们可以通过下标访问数组中的元素:

printf("%d %d %d\n", (*ptr_array)[0], (*ptr_array)[1], (*ptr_array)[2]);

上述代码会输出 1、2 和 3,分别对应数组中的元素。

需要注意的是,由于数组指针指向的是一个数组,因此当我们想要使用数组指针所指向的数组时,需要使用括号将指针和下标括起来,例如上面的 (*ptr_array)[0]。

下面是一个完整的示例代码,演示了指针数组和数组指针的使用:

#include <stdio.h>int main() {// 指针数组int a = 1, b = 2, c = 3;int* ptr_array[3] = {&a, &b, &c};printf("%d %d %d\n", *(ptr_array[0]), *(ptr_array[1]), *(ptr_array[2]));// 数组指针int array[3] = {1, 2, 3};int (*ptr_array2)[3] = &array;printf("%d %d %d\n", (*ptr_array2)[0], (*ptr_array2)[1], (*ptr_array2)[2]);return 0;
}

相关文章:

详解C语言中的指针数组和数组指针

指针数组和数组指针是 C 语言中比较常见的两种类型。它们虽然名字很相似&#xff0c;但是含义、用法以及指向类型都不同&#xff0c;需要分开理解。 指针数组 指针数组是一个数组&#xff0c;其中每个元素都是一个指针。这些指针可以指向不同类型的数据&#xff0c;也可以指向…...

【done】剑指offer18:删除链表指定节点

力扣&#xff0c;https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/description/ // 自己写的答案 class Solution {public ListNode deleteNode(ListNode head, int val) {if (head null) {return null;}if (head.val val) {return head.next;}ListNode …...

图形编辑器开发:缩放和旋转控制点

大家好&#xff0c;我是前端西瓜哥。好久没写图形编辑器开发的文章了。 今天来讲讲控制点。它是图形编辑器的不可缺少的基础功能。 控制点是吸附在图形上的一些小矩形和圆形点击区域&#xff0c;在控制点上拖拽鼠标&#xff0c;能够实时对被选中进行属性的更新。 比如使用旋…...

【2023 云栖】阿里云田奇铣:大模型驱动 DataWorks 数据开发治理平台智能化升级

云布道师 本文根据 2023 云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;田奇铣 | 阿里云 DataWorks 产品负责人 演讲主题&#xff1a;大模型驱动 DataWorks 数据开发治理平台智能化升级 随着大模型掀起 AI 技术革新浪潮&#xff0c;大数…...

Rust语言入门教程(二) - 变量与作用域

变量与作用域 变量的声明与初始化 Rust的基本语法格式如下&#xff1a; fn main(){let bunnies 2; }语句以分号结尾&#xff0c;用花括号包含语句块。 Rust的语法其实借鉴了很多其他的语言&#xff0c;比如C语言和Python&#xff0c; 所以变量定义的格式看起来也跟很多我们…...

芯知识 | Flash可更换声音语音芯片—引领音频IC技术革新的新篇章

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;Flash可更换声音语音芯片应运而生&#xff0c;成为音频技术领域的一颗璀璨明星。本文将详细介绍Flash可更换声音语音芯片的特点、优势以及应用场景&#xff0c;展望其在未来科…...

合共软件创新亮相:第102届上海电子展成就技术新篇章

2023年&#xff0c;第102届中国&#xff08;上海&#xff09;电子展活动在全球瞩目中圆满落幕。作为下半年华东地区最具影响力的电子展会&#xff0c;此次盛会吸引了来自全球的600家领先企业&#xff0c;共同探讨电子元器件行业的最新发展成果和趋势。 本届展会围绕核心先导元器…...

Ubuntu20.04清理垃圾vscode缓存

使用VM虚拟机安装了Ubuntu系统&#xff0c;主目录空间越来越小&#xff0c;硬盘扩容之后很快又空间不足&#xff0c;甚至出现了开机卡黑屏的情况&#xff0c;这里记录一下解决过程。 1 重新开机进入系统 状态&#xff1a;卡到了开机黑屏状态&#xff0c;左上角有一条小横杠 原…...

网络数据结构skb_buff原理

skb_buff基本原理 内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体&#xff0c;而是通过增加协议头和移动指针来操作的。如果是从L4传输到L2&#xff0c;则是通过往sk_buff结构体中增加该层协议头来操作&#xff1b;如果是从L4到L2&#xff0c;则是通过移动sk_…...

SpringCache使用详解

SpringCache 1.新建测试项目SpringCache2.SpringCache整合redis2.1.Cacheable2.2.CacheEvict2.3.Cacheput2.4.Caching2.5.CacheConfig 3.SpringCache问题4.SpringCache实现多级缓存 1.新建测试项目SpringCache 引入依赖 <dependencies><dependency><groupId&g…...

windows版本的grafana如何离线安装插件

本文以安装clickhouse的插件为例&#xff0c;记录下如何离线安装插件 1 下载插件 ClickHouse plugin for Grafana | Grafana Labs 2 找到grafana的配置文件 打开编辑&#xff0c;搜索plugin关键字&#xff0c;修改plugin的加载目录 目录不存在&#xff0c;手动创建&#xff0…...

ElasticSearch01

ElasticSearch 版本&#xff1a;7.8 学习视频&#xff1a;尚硅谷 笔记&#xff1a;https://zgtsky.top/ ElasticSearch介绍 Elaticsearch&#xff0c;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b…...

GPT、GPT-2、GPT-3论文精读笔记

视频&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3 论文精读【论文精读】_哔哩哔哩_bilibili MAE论文&#xff1a;把bert用回计算机视觉领域 CLIP论文&#xff1a;打通文本和图像 GPT 论文&#xff1a;Improving Language Understanding by Generative Pre-Training …...

深度学习八股文:混合精度训练过程出nan怎么办

其实如果是FP32的训练&#xff0c;基本的调试方法还是差不多&#xff0c;这里就讲一下混合精度训练过程中的nan。 混合精度训练使用较低的数值精度&#xff08;通常是半精度浮点数&#xff0c;例如FP16&#xff09;来加速模型训练&#xff0c;但在一些情况下&#xff0c;可能会…...

竞赛选题 题目:基于卷积神经网络的手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…...

Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难&#xff0c;不想问题重重&#xff0c;不想后人重蹈覆辙&#xff0c;也记录下点点滴滴。 目前网上存在的cesium代码版本主要有两个分支&#xff1a; 原始网站【不能生成layer文件&#xff0c;且经久不更新&#xff0c;使用gdal…...

3.1 CPU内部结构与时钟与指令

CPU内部结构 总线一些自定义部件总线图内存指令执行流程:取指令,译码,执行pc做的事内存地址寄存器内存缓存寄存器指令寄存器,译码第一步指令寄存器传递地址到内存地址寄存器指令MOV_A的过程(译码第二步)第一条指令执行完毕第三条指令的执行第四条指令第四条指令不同的执行流程…...

电机应用-直流有刷电机多环控制实现

目录 直流有刷电机多环控制实现 硬件设计 直流电机三环&#xff08;速度环、电流环、位置环&#xff09;串级PID控制-位置式PID 编程要点 配置ADC可读取电流值 配置基本定时器6产生定时中断读取当前电路中驱动电机的电流值并执行PID运算 配置定时器1输出PWM控制电机 配…...

Java常量池理论篇:Class常量池、运行时常量池、String常量池、基本类型常量池,intern方法1.6、1.7的区别

文章目录 Class常量池运行时常量池String常量池基本类型常量池Integer 常量池Long 常量池 加餐部分 Class常量池 每个Class字节码文件中包含类常量池用来存放字面量以及符号引用等信息。 运行时常量池 java文件被编译成class文件之后&#xff0c;也就是会生成我上面所说的 …...

module java.base does not “opens java.io“ to unnamed module

环境 如上图所示&#xff0c; Runtime version的版本是JAVA 17 项目所需要JDK版本为JAVA 8 解决...

Wan2.1-umt5在网络安全领域的应用:威胁情报分析与漏洞报告生成

Wan2.1-umt5在网络安全领域的应用&#xff1a;威胁情报分析与漏洞报告生成 最近和几个做安全运维的朋友聊天&#xff0c;他们都在抱怨一件事&#xff1a;每天面对海量的日志和告警&#xff0c;眼睛都快看花了&#xff0c;但真正要写一份清晰、专业的分析报告时&#xff0c;又得…...

当Copilot遇上Git Rebase:智能生成代码冲突的8种反直觉模式(附可落地的Pre-Commit Hook检测清单)

第一章&#xff1a;智能代码生成与代码冲突解决 2026奇点智能技术大会(https://ml-summit.org) 现代开发工作流中&#xff0c;AI驱动的代码生成已深度嵌入IDE、CI/CD管道与协作平台。当多个开发者基于同一基线提交语义相似但结构不同的补丁时&#xff0c;传统三路合并常因上下…...

Selenium自动化测试实战详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Chrome DevTools 简介Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器&#xff08;如 Chrome、Opera 和 Microsoft Edge&#xff09;中的工具&#xff0…...

20、未来展望:AI编程范式、AGI挑战与职业发展路径

020、未来展望:AI编程范式、AGI挑战与职业发展路径 从一次深夜调试说起 昨晚凌晨两点,我在给一个边缘计算设备部署模型时遇到了诡异的问题:TensorFlow Lite模型在x86模拟器上推理准确率97%,到了ARM板子上直接掉到63%。传统调试手段——查日志、看内存、分析指令集——折腾…...

用自定义图像微调FLUX.1模型

使用自有图像微调FLUX.1模型 现在可以在Replicate上使用快速FLUX训练器微调模型。 该训练速度极快&#xff08;不到2分钟&#xff09;、成本低廉&#xff08;低于2美元&#xff09;&#xff0c;并提供可运行的模型以及可下载的LoRA权重。 FLUX.1是Black Forest Labs今年夏季发布…...

从Copilot到CodeSynergy:如何用4步构建企业级生成-推荐双引擎,提升IDE采纳率3.8倍?

第一章&#xff1a;从Copilot到CodeSynergy&#xff1a;生成与推荐融合的范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 传统AI编程助手如GitHub Copilot&#xff0c;本质上是单向生成模型——基于上下文预测下一行代码&#xff0c;缺乏对开发者意图、项目约束与协作…...

PHP与Suno音乐生成AI集成开发音频应用【操作】

PHP调用Suno API必须用cURL&#xff1a;需POSTBearer认证、硬截prompt至200字符、轮询时指数退避、流式下载音频并校验URL&#xff0c;audio_url有效期仅24小时。PHP调用Suno API必须用cURL&#xff0c;不能用file_get_contentsSuno官方API不支持HTTP GET直接拉取音频&#xff…...

ROS2实战:构建模块化启动文件(launch file)以驱动复杂机器人系统

1. 为什么需要模块化启动文件 第一次接触ROS2的开发者往往会被一个简单问题困扰&#xff1a;为什么不能直接用ros2 run命令启动所有节点&#xff1f;想象你正在开发一辆自动驾驶小车&#xff0c;需要同时运行激光雷达驱动、SLAM算法、路径规划、底盘控制等十几个节点。如果每个…...

Kettle实战避坑指南:从部署到调优的20个关键场景解析

1. 环境部署避坑指南 第一次在Linux上部署Kettle时&#xff0c;我踩了不少坑。记得当时花了两天时间才让一个简单的数据转换任务跑起来&#xff0c;现在回想起来都是血泪史。这里分享几个关键场景的解决方案&#xff0c;帮你少走弯路。 1.1 Windows到Linux的迁移陷阱 很多人习惯…...

DeepBlueCLI输出格式详解:JSON、CSV、HTML等数据处理技巧

DeepBlueCLI输出格式详解&#xff1a;JSON、CSV、HTML等数据处理技巧 【免费下载链接】DeepBlueCLI 项目地址: https://gitcode.com/gh_mirrors/de/DeepBlueCLI DeepBlueCLI是一款强大的PowerShell模块&#xff0c;专为通过Windows事件日志进行威胁狩猎设计。它能够自动…...