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

数组和指针的联系(C语言)

        数组和指针是两种不同的数据类型,数组是一种构造类型,用于存储一组相同类型的变量;而指针是一种特殊类型,专门用来存放数据的地址。数组名除了sizeof(数组名)&数组名表示整个数组外,其他情况下都表示的是首元素的地址,详情见: 

        C语言学习笔记之数组篇-CSDN博客

        因此数组也可以向指针一样通过 +整数并解引用的操作访问数组的元素,如:

#include <stdio.h>int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){printf("%d ", *(arr + i)); //*(arr + i)等价于arr[i]}printf("\n");return 0;
}

        同理,指针也可以像数组一样通过下标访问 代替 +/-整数并解引用的操作,如:

#include <stdio.h>int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int* parr = arr;int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){printf("%d ", parr[i]); //parr[i] 等价于 *(parr + i)}printf("\n");return 0;
}

#include <stdio.h>int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);int* parr = &arr[sz - 1];for (i = 0; i < sz; i++){printf("%d ", parr[-i]); //parr[-i] 等价于 *(parr - i)}printf("\n");return 0;
}

        由此,我们可以得出一个结论,地址[i] == *(地址 + i),即它们的底层实现可能是一样的。数组和指针的联系仅此而已。

相关文章:

  • 区块链学习记录01
  • 深入解析 Web 开发中的强缓存与协商缓存机制
  • 【WEEK15】学习目标及总结【Spring Boot】【中文版】
  • java-StringBuilder
  • printf(“不喝酒就没得朋友可是只要偶一喝酒就喝倒一代朋友人生真的很矛盾“);
  • 大语言模型 (LLM) 窥探未来
  • 在vue项目中使用markdown-it回显markdown文本
  • 在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本
  • 全数仓体系建设规范V4.0
  • 中国出海企业“奔赴”俄罗斯蓝海 有哪些认知需要对齐? | TopOn变现干货
  • AI数字人本地算力直播怎么做?青否数字人教您快速搭建直播间!
  • 2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷7(私有云)
  • 构建高可用微服务:SpringCloud Alibaba解决方案揭秘
  • C# —— List数组
  • HTML跨年烟花
  • SegmentFault for Android 3.0 发布
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Android开源项目规范总结
  • ES6核心特性
  • HTTP--网络协议分层,http历史(二)
  • MySQL的数据类型
  • PAT A1050
  • React Native移动开发实战-3-实现页面间的数据传递
  • Vue学习第二天
  • webpack入门学习手记(二)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 不上全站https的网站你们就等着被恶心死吧
  • 今年的LC3大会没了?
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 入手阿里云新服务器的部署NODE
  • 实习面试笔记
  • 微信小程序--------语音识别(前端自己也能玩)
  • 用 Swift 编写面向协议的视图
  • 用mpvue开发微信小程序
  • NLPIR智能语义技术让大数据挖掘更简单
  • Semaphore
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​比特币大跌的 2 个原因
  • ​你们这样子,耽误我的工作进度怎么办?
  • "无招胜有招"nbsp;史上最全的互…
  • # .NET Framework中使用命名管道进行进程间通信
  • #Ubuntu(修改root信息)
  • (C#)获取字符编码的类
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (WSI分类)WSI分类文献小综述 2024
  • (备忘)Java Map 遍历
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (四) 虚拟摄像头vivi体验
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)