C语言--指针与数组--遍历数组的n种方式【详细】


 一.一维数组名的含义

arr一般表示数组的其实地址除了两种例外)

1.在定义数组的同一个函数中(不是形参),求sizeof(arr),求整个数组的字节数
2.在定义数组的同一个函数中(不是形参),&arr+1,加整个数组的大小 (经常考试)
3.除上面以外,arr都表示数组的起始地址(首元素的地址)


 二.指针与数组的互换

上文提到过:arr表示数组的首元素地址,由于如此,数组就和指针扯上了关系

   int *p = arr;有如下互换的情况成立
  *(p+i)==p[i];
  *(arr+i) == arr[i];
   一般建议,尽量使用下标,因为*容易漏掉

 所以有时候,程序中的数组形式其实是个指针,有时候的指针其实想要表达数组,我们只要通过上面的公式转回原来的意思。比如p[i]转换为数组就是arr[i]。

下面的程序表达的都是元素4

int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int* p = &arr[0]; //定义一个指针变量保存数组的首元素地址
	int* p1 = arr;//定义一个指针变量保存数组的首元素地址
	// p===arr 两者可以互换
	printf("%d\n", arr[3]);
	printf("%d\n", p[3]);
	printf("%d\n", *(p + 3));
	printf("%d\n", *(arr + 3));
	return 0;
}


三.遍历数组的n种方式

有两大思路:

1.下标移动

2.指针移动 

 方法一:

 方法二:

方法三:

 方法四:

 方法五:

方法六:

 

//第一种写法:通过下标遍历数组
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0;i < sz;i++)
	{
		printf("%d ", arr[i]);
	}
}


//第二种写法:通过指针遍历数组
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int* p = arr;
	for (int i = 0;i < sz;i++)
	{
		printf("%d ", *p); //不推荐
		p++;
	}
}



//第三种写法:通过指针遍历数组
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int* p = arr;
	for (int i = 0;i < sz;i++)
	{
		printf("%d ", *(p+i)); //指针本身不动,i在动
	}
}


//第四种写法:
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int* p = arr;
	for (int i = 0;i < sz;i++)
	{
		printf("%d ", p[i]); //p[i]==arr[i],指针有时候可以和数组互换,把它转换为数组
	}
}




//第五种写法:
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int* p = arr;
	for (int i = 0;i < sz;i++)
	{
		printf("%d ", *(arr+i)); //*(p+i)==*(arr+i)==p[i]==arr[i]
	}
}



//第六种写法:
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int* p = &arr[0];p < &arr[sz];p++) //通过指针移动
	{
		printf("%d ", *p);
	}
}

 创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐

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

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

相关文章

智能穿戴AR眼镜主板方案定制_MTK平台AR智能眼镜PCB板开发

AR智能眼镜&#xff0c;是采用了多种技术实现增强现实效果&#xff0c;是将虚拟信息和现实场景相结合的智能设备。 AR智能眼镜硬件上&#xff0c;包括多个传感器、显示装置和处理器等。其中&#xff0c;传感器用于捕捉用户的动作和环境信息&#xff0c;如摄像头、陀螺仪、加速…

【python】爬取酷狗音乐Top500排行榜【附源码】

一、导入必要的模块&#xff1a; 这篇博客将介绍如何使用Python编写一个爬虫程序&#xff0c;从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应&#xff0c;以及os模块处理文件和目录操作。 如果出现模块报错 进入控制台输入&#xff…

Axure原型设计工具怎么样?有替代软件吗?

Axurerp是一种快速原型设计工具&#xff0c;可以制作高度互动的HTML原型。设计师不仅可以使用Axure绘制线框图和原型&#xff0c;还可以在Axurerp中完成一系列用户体验设计。在本文中&#xff0c;我们将根据用户体验设计师的真实经验&#xff0c;触发用户体验设计师的实际工作&…

(论文阅读30/100)Convolutional Pose Machines

30.文献阅读笔记CPMs 简介 题目 Convolutional Pose Machines 作者 Shih-En Wei, Varun Ramakrishna, Takeo Kanade, and Yaser Sheikh, CVPR, 2016. 原文链接 https://arxiv.org/pdf/1602.00134.pdf 关键词 Convolutional Pose Machines&#xff08;CPMs&#xff09;…

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)

数据库管理-第116期 Oracle Exadata 06-ESS-下&#xff08;202301114&#xff09; 距离上一次正儿八经的技术分享又过了整整一周了&#xff0c;距离上一期Exadata专题文章也过了11天了&#xff0c;今天一鼓作气把ESS写完&#xff0c;毕竟明天又要飞北京了。 1 Smart Scan 其…

SpringCloud Alibaba(中):服务熔断降级-Sentinel

Sentinel Sentinel是阿里巴巴开源的分布式系统流量防卫防护组件&#xff0c;主要对分布式系统中的流量进行控制、熔断降级等保护操作。Sentinel的目标是成为互联网级别分布式系统的流量防卫防护组件&#xff0c;它与系统的各个部分集成&#xff0c;保护着系统的入口和出口。 …

【蓝桥杯选拔赛真题20】C++求正方形面积 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++求正方形面积 一、题目要求 1、编程实现 2、输入输出 二、算法分析

Hadoop3.3.4分布式安装

安装前提&#xff1a;已经配置好java环境&#xff0c;所有机器之间ssh的免密登录。 注意&#xff1a;下文中的flinkv1、flinkv2、flinkv3是三台服务器的别名 1.集群部署规划 注意&#xff1a;NameNode和SecondaryNameNode不要安装在同一台服务器 注意&#xff1a;ResourceMan…

软件测试/测试开发丨​利用人工智能ChatGPT批量生成测试数据

点此获取更多相关资料 简介 测试数据是指一组专注于为测试服务的数据&#xff0c;既可以作为功能的输入去验证输出&#xff0c;也可以去触发各类异常场景。 测试数据的设计尤为重要&#xff0c;等价类、边界值、正交法等测试用例设计方法都是为了更全面地设计对应的测试数据…

上机实验三 图的最小生成树算法设计 西安石油大学数据结构

二叉树设计 实验名称&#xff1a;二叉树设计 &#xff08;1&#xff09;实验目的&#xff1a; 1&#xff09; 掌握二叉树的逻辑结构。 2&#xff09; 掌握二叉树的二叉链表存储结构&#xff1b; 3&#xff09; 掌握基于二叉链表存储的二叉树的遍历等操作的实现。 &#x…

F : DS图遍历--广度优先搜索

Description 给出一个图的邻接矩阵&#xff0c;对图进行广度优先搜索&#xff0c;从顶点0开始 注意&#xff1a;图n个顶点编号从0到n-1 如果图不连通&#xff0c;则对尚未访问的编号结点继续进行广度优先搜索&#xff0c;直到所有结点被访问 Input 第一行输入t&#xff0c…

Camtasia 2024中文版功能介绍

在如今的数字时代&#xff0c;屏幕录制已成为许多工作或学习中不可或缺的一部分&#xff0c;无论是制作教学视频、演示软件功能&#xff0c;还是为了录制游戏过程&#xff0c;屏幕录制软件都扮演着至关重要的角色。实际上屏幕录制不仅仅可以单纯录制屏幕&#xff0c;还能玩出非…

【Kotlin精简】第8章 协程

1 简介 Kotlin 中的协程提供了一种全新处理并发的方式&#xff0c;您可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入&#xff0c;但这一概念在编程世界诞生的黎明之际就有了&#xff0c;最早使用协程的编程语言可以追溯到 1967 年的 Sim…

相约黄浦江畔,汇聚AI与边缘计算的力量

很高兴告诉您&#xff1a;全球边缘计算大会上海站即将盛大启幕&#xff01; 第八届全球边缘计算大会将于12月16日&#xff08;周六&#xff09;在上海黄浦江旁边的三至喜来登酒店召开&#xff0c;距离这场边缘计算年度盛会开幕仅剩最后35天啦&#xff01; 参会收益 开阔视野&am…

咱就是问坐发动机上跑得快吗?意塔杰特Dragster559 Twin

这家伙可以说是这次米兰车展踏板车里面最怪的了&#xff0c;不过性能方面有点出众&#xff0c;外观也是极为独特的。 车架采用的是裸露的编制车架&#xff0c;这也符合这个品牌的风格&#xff0c;这也是他们家的一个卖点了&#xff0c;不过这个车好像还是工程样车的状态&#x…

并发编程由浅及深(一)

并发编程重要吗&#xff1f;当然重要&#xff0c;因为并发在我们的项目中真实存在&#xff0c;如果你不能充分了解它那么很可能造成严重的生产事故。最近隔壁项目组出了一个问题&#xff0c;每次请求接口之后都发现线程固定增加了5个&#xff0c;而且线程数一直增加没有减少&am…

景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商

根据IDC相关数据统计&#xff0c;全球数据量正在经历爆炸式增长&#xff0c;预计将从2016年的16.1ZB猛增至2025年的163ZB&#xff0c;其中大部分是非结构化数据&#xff0c;被直接利用&#xff0c;必须通过数据标注转化为AI可识别的格式&#xff0c;才能最大限度地发挥其应用价…

飞书开发学习笔记(六)-网页应用免登

飞书开发学习笔记(六)-网页应用免登 一.上一例的问题修正 在上一例中&#xff0c;飞书登录查看网页的界面显示是有误的&#xff0c;看了代码&#xff0c;理论上登录成功之后&#xff0c;应该显示用户名等信息。 最后的res.nickName是用户名&#xff0c;res.i18nName.en_us是英…

leetcode二分查找算法题

目录 1.二分查找2.在排序数组中查找元素的第一个和最后一个位置3.x的平方根4.搜索插入位置5.山脉数组的峰顶索引6. 寻找峰值7.寻找旋转排序数组中的最小值8.8.0~n-1中缺失的数字 1.二分查找 二分查找 class Solution { public:int search(vector<int>& nums, int …

Ubuntu 17.10 “Artful Aardvark” 发布首个 Beta

Ubuntu 17.10 “Artful Aardvark” 首个 Beta 版已发布。 按照 Ubuntu 17.10 的发布日程 &#xff0c;Ubuntu 17.10 首个 beta 版按时发布了。不过参与本次测试版的没有 Ubuntu 官方风味版本&#xff08;要尝试的话可以考虑每日构建 ISO&#xff09;&#xff0c;包括了 Kubunt…