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);}
}

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

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

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

相关文章

【Proteus仿真】【STM32单片机】拔河游戏设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用按键、LED、动态数码管模块等。 主要功能&#xff1a; 系统运行后&#xff0c;指示灯处于中间位置&#xff0c;数码管显示得分0&#xff0c;当…

LeetCode | 20. 有效的括号

LeetCode | 20. 有效的括号 OJ链接 这道题可以使用栈来解决问题~~ 思路&#xff1a; 首先我们要使用我们之前写的栈的实现来解决此问题~~如果左括号&#xff0c;就入栈如果右括号&#xff0c;出栈顶的左括号跟右括号判断是否匹配 如果匹配&#xff0c;继续如果不匹配&#…

【工艺库】SMIC数字后端工艺库

工艺库文件 Calibredigital文件夹apollolefprimetimesynopsys TD系列文件夹 本来是想找一个工艺库&#xff0c;想要其包含逻辑综合和SPICE Model相关的库文件&#xff0c;但是找了很久也没有直接找到想要的&#xff0c;主要原因还是自己对工艺库文件的构成不是很清楚&#xff0…

Clickhouse学习笔记(15)—— Clickhouse备份

手动备份 参考官网&#xff1a;Backup and Restore | ClickHouse Docs 简单来说&#xff0c;就是我们可以通过ALTER TABLE ... FREEZE PARTITION ...命令为表分区创建一个本地副本&#xff0c;然后这个副本硬链接到/var/lib/clickhouse/shadow/文件夹&#xff0c;因此其不会耗…

壹基金爱泽瑞金 安全家园物料配送忙

11月9日到10日&#xff0c;瑞金赋能公益陆续收到壹基金、阿里巴巴公益爱心网友捐赠的社区志愿者救援队队伍物资&#xff0c;马不停蹄地把物资配送到河背街社区、金都社区和沙洲坝镇等项目点&#xff0c;扎实稳妥推进项目有序执行。 在这次物资配送中&#xff0c;志愿者冒雨前行…

【Amazon】云上探索实验室—了解 AI 编程助手 Amazon Codewhisperer

文章目录 一、前言&#x1f4e2;二、关于云上探索实验室&#x1f579;️三、领学员需要做什么&#xff1f;✴️四、领学员能获得什么&#xff1f;&#x1f523;五、学课通道入口&#x1f447;1️⃣CSDN平台2️⃣网易云课堂3️⃣Skill Builder 平台 六、活动详情链接 一、前言&a…

Umeyama 算法之源码阅读与测试

Title: Umeyama 算法之源码阅读与测试 文章目录 前言I. Eigen 中 Umeyama 算法源码1. Eigen/src/Geometry/Umeyama.h 源码2. 代码测试 II. PCL 中 Umeyama 算法源码III. evo 中 Umeyama 算法源码1. evo/core/geometry.py 源码2. 代码测试 总结参考文献 [相关博文介绍] - 矩阵乘…

后端接口性能优化分析-程序结构优化

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

1、NPC 三电平SVPWM simulink仿真

1、SVPWM时间计算函数&#xff0c;是从matlab的SVPWM3L_TimingCalculation.p文件中反汇编出来的函数&#xff1a; function [TgABC_On ,TgABC_Off ,Sn ]SVPWM3L_TimingCalculation_frompfile (Vref ,DeltaVdc ,Fsw ) %#codegen %coder .allowpcode (plain ); TgABC_On [0 ,0 ,…

玩转ChatGPT:ARIMA模型定制GPT-1.0

一、写在前面 好久不更新咯&#xff01; OpenAI又推出了GPT的一系列重大更新&#xff0c;其中GPTs深得我心啊。 GPTs允许用户创建自定义的ChatGPT版本&#xff0c;以满足自己各种特定需求。其核心理念在于&#xff0c;用户可以为不同的场景和任务创建定制化的ChatGPT。这意味…

WorldView 1 2 3 4卫星影像

WorldView WorldView卫星是Digitalglobe公司的商业成像卫星系统。它由两颗(WorldView-I和WorldView-II)卫星组成。 WorldView-1 WorldView-1卫星为美国DigitalGlobe公司的高分辨率商用卫星&#xff0c;于2007年9月18日成功发射&#xff0c;可提供0.5m分辨率卫星影像。灵活的…

No207.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…