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

devtools/2024/9/23 0:30:47/

        数组和指针是两种不同的数据类型,数组是一种构造类型,用于存储一组相同类型的变量;而指针是一种特殊类型,专门用来存放数据的地址。数组名除了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),即它们的底层实现可能是一样的。数组和指针的联系仅此而已。


http://www.ppmy.cn/devtools/49818.html

相关文章

Postman简介

目录 1.概述 2.诞生背景 3.历史版本 4.安装和卸载 5.菜单和菜单项 6.使用 7.应用场景 8.示例 8.1.简单的GET请求 8.2.POST请求提交数据 8.3.查询参数 9.未来展望 10.总结 1.概述 Postman是一款用于API开发、测试和文档管理的综合性工具。允许开发者和测试人员创建…

怎么压缩视频大小

在数字时代&#xff0c;视频已成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;视频文件的大小也越来越大&#xff0c;这给存储和传输带来了不小的挑战。因此&#xff0c;学会如何有效地压缩视频文件&#xff0c;就显得尤为重要。本文将详细介绍一种常用的视频压缩…

【docker实战】使用代理的坑

在docker公共仓库被封禁的日子里&#xff0c;大多数人更喜欢使用镜像仓库代理源。 网上教程一大把&#xff0c;似乎不使用代理&#xff0c;就不会使用docker一样。 上图就是我设置的代理源镜像仓库。通常是设置/etc/docker/daemon.json这个文件实现的。 这样设置之后&#xff0…

时钟寄存器配置

STM32F103XX时钟 三种不同的时钟源可被用来驱动系统时钟(SYSCLK)&#xff1a; HSI振荡器时钟&#xff1a;系统时钟&#xff1b;由内部8MHz的RC振荡器产生&#xff0c;启动时间比HSE晶体振荡器短。即使在校准之后它的时钟频率精度仍较差。 HSE振荡器时钟&#xff1a;3~25Mz外部…

COSMIC法软件评估总结

子过程描述不要出现检验、校验、分析、判断、解析这样的字眼&#xff0c;因为COSMIC认为校验可以被其关联的数据移动所承担&#xff0c;校验过程没有数据移动&#xff0c;不单独算是一个功能点。&#xff08;尽量用通俗易懂的描述&#xff09;COSMIC材料中不要出现英文表名或者…

易灸灸的微商模式,新零售全案运营,裂变营销与代理模式

易灸灸的独特之处在于其受众面广&#xff0c;男女老少均可使用&#xff0c;且作为短时间消耗品&#xff0c;具有高复购率的特点。这使得裂变营销模式成为易灸灸的最佳选择。裂变营销通过用户的分享和推荐&#xff0c;快速提高品牌的知名度&#xff0c;降低营销成本&#xff0c;…

Vue使用vue-esign实现在线签名

Vue在线签名 一、目的二、样式三、代码1、依赖2、代码2.1 在线签名组件2.2父组件 一、目的 又来了一个问题&#xff0c;直接让我在线签名&#xff08;还不能存储base64&#xff09;&#xff0c;并且还得上传&#xff0c;我直接***违禁词。 二、样式 初始样式 点击前往组件&am…

鸿蒙原生开发——轻内核A核源码分析系列三 物理内存(2)

3.1.2.3 函数OsVmPhysLargeAlloc 当执行到这个函数时&#xff0c;说明空闲链表上的单个内存页节点的大小已经不能满足要求&#xff0c;超过了第9个链表上的内存页节点的大小了。⑴处计算需要申请的内存大小。⑵从最大的链表上进行遍历每一个内存页节点。⑶根据每个内存页的开始…