指针数组|用三个例子帮你学会它的用法(新手易懂)

news/2024/4/26 18:53:52/文章来源:https://blog.csdn.net/m0_53558236/article/details/127057577

谈及指针数组,我们知道,指针数组是一个存放指针的数组
例如:

char* arr[5];//arr是存放字符指针的数组
int* arr2[4];//arr2是存放整形指针的数组

那么这些东西都有什么用呢?
我们举几个例子,顺便看看它的用法
在这里插入图片描述

例子1:

我们给出

int a = 10;
int b = 20;
int c = 30;
int d = 40;

然后给出

int* arr2[4] = {&a, &b, &c, &d};//arr2就是整型指针的数组

我们知道,这时,&a, &b, &c, &d的类型都是int*
那么上面代码对应的内存布局是什么样的呢?
我们画个图来看看
内存中创立了4个变量a,b,c,d
在这里插入图片描述
接下来创建了arr2数组,数组里面有4个元素,元素类型是int*,这个数组的空间是连续的
在这里插入图片描述

int* arr2[4] = {&a, &b, &c, &d};意味着取地址a,指向的a的地址,取地址b,指向b的地址,以此类推
在这里插入图片描述
大概就是这样的内存布局。

那么如果我们拿到了arr2数组,我们就能把a,b,c,d的值打印出来,具体操作如下:
当我们通过arr2[i],就能找到下标为i的元素,对arr2[i]解引用,即*arr2[i],就能找到arr2[i]对应指向的内存的值。比如:arr2[1],就是&b,对arr2[1]解引用*arr2[1],就能得到&b指向的内存b的值20了。
用个循环即可打印出10,20,30,40了。

int i = 0;
for (i = 0; i < 4; i++)
{printf("%d ", *(arr2[i]));
}

在这里插入图片描述

例子2:

我们给出

int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 2,3,4,5,6 };
int arr3[] = { 3,4,5,6,7 };int* parr[] = { arr1, arr2, arr3 };

上面的arr1[ ],arr2[ ],arr3[ ]代表整形数组,parr[ ]代表整形指针数组
我们知道,数组名就是首元素的地址
如代码int* parr[] = { arr1, arr2, arr3 };中arr1就代表arr1[ ]数组首元素“1”的地址

上面代码对应的内存布局如下图:

在这里插入图片描述
那么我们如果得到了parr数组,那么我们就能依次的打印出12345 23456 34567 45678了

int i = 0;
for (i = 0; i < 3; i++)
{int j = 0;for (j = 0; j < 5; j++){printf("%d ", parr[i][j]);//parr[i] == *(parr+i)//parr[i][j] == *(parr[i]+j)}printf("\n");
}

通过parr下标为0的元素,拿到arr1的起始地址;通过parr下标为1的元素,拿到arr2的起始地址,以此类推。
对于parr[i][j],原理是这样的:

parr[i] == *(parr+i)
parr[i][j] == *(parr[i]+j)

❗注意:这里看起来像是二维数组或二级指针,其实不是的,这里用的是其实是指针数组,不要混淆了。二级指针是用来存放一级指针变量的地址的,和二维数组也没有关系。

我们来看看运行结果
在这里插入图片描述

例子3:

我们给出

char* arr[5] = {neijvbucun"Aaaa", "Bbbb", "Cccc", "Dddd", "Eeee"};

arr是个含有5个元素的数组,每个元素的类型是char*,我们用5个常量字符串去初始化是可以的,相当于arr中存放的依次是首字符A,B,C,D,E的地址。
因为里面放的都是常量字符串,每个元素都是不允许改的,所以我们在char*前面加上const,这样会更好一些。

const char* arr[5] = {"Aaaa", "Bbbb", "Cccc", "Dddd", "Eeee"};

具体详细说明可以看我之前这篇博客:字符指针使用方法|新手易懂(含笔试题)
内存布局如下图
在这里插入图片描述

然后我们可以打印这些字符串

int main()
{const char* arr[5] = { "Aaaa", "Bbbb", "Cccc", "Dddd", "Eeee" };int i = 0;for (i = 0; i < 5; i++){printf("%s\n", arr[i]);}printf("%s\n", arr[2]);return 0;
}

运行一下:
在这里插入图片描述
以上就是我总结的指针数组的使用方法,希望对大家有帮助。

欢迎指教指点。

我的主页还有其他文章,欢迎和我一起学习。

点赞👍+关注

让我们一起学习一起成长!
在这里插入图片描述

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

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

相关文章

转转闲鱼交易猫源码

教程&#xff1a;修改数据库账号密码直接使用。 程序下载&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

线程不安全的原因2

多线程系列文章目录 &#x1f4a5; &#x1f4a5; &#x1f4a5;如果你觉得我的文章有帮助到你&#xff0c;还请【关注➕点赞➕收藏】&#xff0c;得到你们支持就是我最大的动力!!! &#x1f4a5; &#x1f4a5; &#x1f4a5; ⚡版权声明&#xff1a;本文由【马上回来了】原…

C语言---14文件操作---03文件加密器

一、原理分析 对称加密体制是传统而经典的加密体制策略 加密方A使用该密钥key对要保密的文件进行加密操作&#xff0c;从而生成密文 解密方B同样使用该密钥key对加密文件实施解密操作&#xff0c;从而生成明文 &#xff08;一&#xff09;加密过程 &#xff08;二&#xff09…

【Ubuntu启动菜单的默认项】

【Ubuntu启动菜单的默认项】1. 摘要2. 具体实现2.1 打开grub配置2.2 修改默认启动4. 总结欢迎大家阅读2345VOR的博客【Ubuntu同步系统时间】&#x1f973;&#x1f973;&#x1f973; 本人主页&#xff1a; 已获得CSDN《嵌入式领域新星创作者》称号&#x1f47b;&#x1f47b;&…

【PyTorch深度学习项目实战100例】—— 使用GRU进行天气变化的时间序列预测 | 第11例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

Python-入门-模块和包(十三)

文章目录Python-入门-模块和包导入模块自定义模块自定义模块编写说明文档导入文件名中带空格与文件名以数字开头的模块\_\_name\_\_\_\_main\_\_作用详解导入模块的3种扩展方式动态执行模块模块内成员私有 多模块管理(包的概念)查看模块&#xff08;变量、函数、类&#xff09;…

上手全局锁,死锁

全局锁 就是对 整个数据库实例 加锁。当你需要让整个库处于 只读状态 的时候&#xff0c;可以使用这个命令&#xff0c;之后 其他线程的以下语句会被阻塞&#xff1a;数据更新语句&#xff08;数据的增删改&#xff09;、数据定义语句&#xff08;包括建表、修改表结 构等&…

《uni-app》一个非canvas的飞机对战小游戏实现(一)准备

这是一个没有套路的前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e;接下来的几篇都是uni-app的小实战&#xff0c;有助于我们更好的去学习u…

【论文阅读】Multitask Prompted Training Enables Zero-shot Task Generalization

文章目录AbstractIntroductionMeasuring generalization to held-out tasksA unfied prompt formatExperimental setupResultsConclusionAbstract 大模型在多种任务上学习提高了 zero-shot 泛化能力&#xff0c;有人假设这是语言模型在隐式多任务学习的结果。 zero-shot 泛化…

【C++】类和对象(上篇)——类的定义,访问限定符与this指针

前言 C 语言和 C 最大的区别就是一个面向过程&#xff0c;一个面向对象。而提到面向对象就不得部提到类&#xff0c;这一篇文章&#xff0c;我们主要探讨一下 C 中类的定义以及一些基本的权限。 目录 一、类的引入 二、类的定义 三、访问限定符 3.1 public 3.2 private / …

PTA - 数据库合集11

目录 10-74 修改学生选课成绩 10-75 添加成绩等级rank字段 10-77 删除成绩为空的学生选课记录 10-74 修改学生选课成绩 分数 5 全屏浏览题目 切换布局 作者 张庆 单位 集美大学 本题目要求编写UPDATE语句&#xff0c; 在SC表中修改‘C001’课程的成绩&#xff0c;若成绩小…

【自学】利用python进行数据分析 LESSON6 <pandas入门——pandas数据结构介绍2>

目录 前言 一、DataFrame 1. 列的选取 2. 行的选取 3. 列的修改 4. 列的删除 5. 嵌套字典赋给DataFrame 总结 前言 继续上一节的内容。往期内容如下&#xff1a; 【自学】利用python进行数据分析 LESSON5 &#xff1c;pandas入门——pandas数据结构介绍1&#xff1e;_…

数据结构初阶 顺序表补充

一. 题目的要求 写出三种链表的接口函数 它们的功能分别是 1 查找数的位置 2 在pos位置插入值 3 在pos位置删除值 二. 实现pos 这个其实很简单 找到一步步遍历 找到这个数字就返回 找不到就提示用户下 这 个数字不存在 int SeqListFind(SL* ps,int x) {int i;for ( i …

Red Hat Enterprise Linux release 8.0 (Ootpa)-性能调优工具Tuned

一、Tuned简介Tuned是Red Hat Linux操作系统自带的性能调优工具,通过针对特定应用场景提供配置来改善系统性能,自Red Hat Enterprise Linux/CentOS的6.3版本开始出现,包括两部分tuned和tuned-adm,其中tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供…

SpringBoot二十六课大纲和目录

目录 ​​ 即使是在憎恨和杀戮中&#xff0c;仍然有些东西值得人们为之活下去。一次美丽的相遇&#xff0c;或是为了美丽事物的存在。我们描绘憎恨&#xff0c;是为了描写更重要的东西。我们描绘诅咒&#xff0c;是为了描写解放后的喜悦。 SpringBoot《第一课》_星辰镜的博客…

clickhouse常见部署图及LowCardinality低基数类型优缺点

clickhouse使用jdbc进行查询插入数据操作的部署图 一.读sql的核心是 读分布式表的数据&#xff08;分布式表可以读取互为副本的本地表的数据&#xff0c;起到容灾的目的&#xff09;&#xff0c;然后使用nginx作为负载均衡器和反向代理&#xff0c;代理后端clickhouse的分布式…

什么是低代码

文章目录no code / low code / pro code按适用范围的维度来分类低代码的技术意义与商业价值技术意义商业价值行业状态速读平台分类不同的实现方式不同的使用群体不同的使用方式优秀开源项目推荐no code / low code / pro code no code&#xff1a;自己编程给自己用&#xff0c…

Yao‘s GC 的通信最优解:Half Gate

参考文献&#xff1a; Bellare M, Hoang V T, Rogaway P. Foundations of garbled circuits[C]//Proceedings of the 2012 ACM conference on Computer and communications security. 2012: 784-796.Zahur S, Rosulek M, Evans D. Two halves make a whole[C]//Annual Interna…

MyBatisPlus入门宝典(二)CRUD

目录 一.添加 二.相关注解 三.修改 四.删除 五.查询 六.条件构造器 七.分页查询 八.全局配置 一.添加 1.配置文件开启SQL日志打印 # 开启SQL日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 2.测试添加方法&#xff1a; …

Unity URP 色彩之旅

Unity URP 色彩之旅 这一切只是色彩科学的冰山一角… 文章目录Unity URP 色彩之旅1 我们是如何感知世界的&#xff1f;1.1 首先要有光&#xff01;1.2 人眼响应1.3 奇怪的大脑2 我们是如何描述颜色的&#xff1f;2.1 CIE 1931 RGB Color Space2.2 CIE 1931 XYZ Color Space2.3 …