C语言如何使⽤指针操作多维数组?

一、问题

        如何使⽤指针操作多维数组呢?

二、解答

        从⼆维数组的⻆度来看,a 是⼆维数组名,a 代表整个⼆维数组的⾸地址,也是⼆维数组 0 ⾏的⾸地址,等于1000。a+1 代表第⼀⾏的⾸地址,等于1008。

        如下图所示。 a[0] 是第⼀个⼀维数组的数组名和⾸地址,因此也为1000。*(a+0) 或 *a 是与 a[0] 等效的,它表示⼀维数组 a[0] 0 号元素的⾸地址,也为 1000。&a[0][0] 是⼆维数组a的0⾏0列元素⾸地址,同样是1000。因此,a,a[o],*(a+0),*a,&a[0][0]是相等的。

        同理,a+1 是⼆维数组 1 ⾏的⾸地址,等于1008。a[1] 是第⼆个⼀维数组的数组名和⾸地址,因此也为 1008。&a[1][0] 是⼆维数组 a 的 1 ⾏ 0 列元素地址,也是1008。因此a+1,a[1],*(a+1),&a[1][0]是等同的。

        由此可得出:a+i,a[i] ,*(a+i),&a[i][0] 是等同的。

        此外,&a[i] 和 a[i] 也是等同的。因为在⼆维数组中不能把 &a[i] 理解为元素 a[i] 的地址, 不存在元素 a[i] 。C语⾔规定,它是⼀种地址计算⽅法,表示数组 a 第 i ⾏⾸地址。由此可以得出:a[i] ,&a[i] ,*(a+i) 和 a+i 也都是等同的。

        另外,a[]也可以看成是 a[0]+0,是⼀维数组 a[0] 的 0 号元素的⾸地址,⽽ a[0]+1 则是 a[0] 的 1 号元素⾸地址,由此可得出 a[i]+j是⼀维数组 a[i] 的 j 号元素⾸地址,它等于&a[i][j] 。

int main()
{
    int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
    printf("%d", a);
    printf("%d", *a);
    printf("%d", a[0]);
    printf("%d", &a[0]);
    printf("%d", &a[0][0]);
    printf("%d", a + 1);
    printf("%d", *(a + 1));
    printf("%d", a[1]);
    printf("%d", &a[1]);
    printf("%d\n", &a[1][0]);
    printf("%d", a + 2);
    printf("%d", *(a + 2));
    printf("%d", a[2]);
    printf("%d", &a[2]);
    printf("%d\n", &a[2][0]);
    printf("%d", a[1] + 1);
    printf("%d\n", *((a + 1) + 1));
    printf("%d,%d\n", *(a[1] + 1), *((a + 1) + 1));
}

        由 a[i]=*(a+i) 得a[i]+j=*(a+i)+j。由于 *(a+i)+j 是⼆维数组 a 的 i ⾏ j 列元素的⾸地址,所以,该元素的值等于 *(*(a+i)+j)。

        指针操作⼆维数组的基本操作实例程序如下。

 三、总结

        这⾥仅是⼀级指针对⼆维数组的操作,但是我们⼀定要透彻地进⾏理解,因为⼆级指针操作⼆维数组时要以此为基础。

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

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

相关文章

【工具使用】神经网络训练高效可视乎库visdom | 使用方式 概念全梳理

我们知道深度学习训练过程中,非常重要的一部分是深度学习的可视乎 一般主流的是tensorboard 还有我在一个代码中看到了visdom,感觉非常Nice 想系统学习并了解一下相关内容 Visdom 是一个由 Facebook Research 开发的开源可视化工具,主要用…

【Java EE】总结12种锁策略以及synchronized的实现原理

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

C语言 | Leetcode C语言题解之第49题字母异位词分组

题目: 题解: /*1.将字符串原串与副本进行绑定成一个节点2.对字符串副本进行按ascii码表进行从小到大排序3.按照字符串进行比较排序4.合并 */ typedef struct Node{char*s;char*s_vice;int len; }Node;void sortShellChar(char*s,int len){for(int dista…

element-ui upload 组件 手动多次出发 submit

element 上传组件 upload 上传成功以后,想重新 调用 submit()函数,发现是不可以进行多次触发的,。 直接上解决方法,在上传成功后的钩子函数里添加:fileList[0l.status ready fileList是文件列表,status是单文件的状态改成ready就…

致力于为企业提升媒体宣传的一种新策略-软文发稿和投放

随着新媒体时代的快速发展,媒体宣发的方式也在不断迭代,其中,“软文发稿”成为了许多企业非常看重的一种媒体宣发方式。那么,什么是“软文发稿”呢?这是一种通过撰写有新闻属性的广告文章,将企业的品牌、产…

Oracle故障处理:ORA-00600错误处理思路

提前说明: 该故障,我只是旁观者。 但处理该故障的DBA工程师,思路很清晰,我非常受教!在此也将经验分享。 目录 项目场景 问题分析 优化建议 项目场景 在某项目数据库运维群,有现场同事发了张报错截图如下…

密码学 | Schnorr 协议:零知识身份证明和数字签名

🥕原文: Schnorr 协议:零知识身份证明和数字签名 🥕写在前面: 本文属搬运博客,自己留存学习。文中的小写字母表示标量,大写字母表示椭圆曲线中的点。 1 Schnorr 简介 Schnorr 由德国数学家和密…

c++中的指针

一、指针的基本概念 指针的作用&#xff1a;可以通过指针间接访问内存 内存编号是从0开始记录的&#xff0c;一般采用16进制数字表示。可以利用指针变量保存地址。 二、指针变量的定义和使用 指针变量定义语法&#xff1a; 数据类型 * 变量名 #include<iostream> u…

电脑怎么压缩视频?3个角度6个方法教会你视频压缩~

电脑端压缩视频的方法有很多&#xff0c;比如使用专业的视频压缩软件&#xff0c;提供更多的功能和选项&#xff0c;可以根据用户的需求进行更精细的设置和调整。具有更高的处理能力和优化的算法&#xff0c;能够更快速地完成视频压缩任务&#xff1b;比如使用在线网站&#xf…

HCIP-Datacom-ARST必选题库_01_ACL【7道题】

一、单选 1.下面是一台路由器的部分配置,关于该配置描述正确的是&#xff1a; 源地址为1.1.1.1的数据包匹配第一条ACL语句rule 0,匹配规则为允许 源地址为1.1.1.3的数据包匹配第三条ACL语句rule 2,匹配规则为拒绝 源地址为1.1.1.4的数据包匹配第四条ACL语句rule 3,匹配规则为允…

AOC vs. DAC:哪个更适合您的网络需求?

在现代网络通信中&#xff0c;选择合适的连接线缆对于数据传输的稳定性和速度至关重要。两种常见的线缆类型是 AOC&#xff08;Active Optical Cable&#xff09; 和 DAC&#xff08;Direct Attach Cable&#xff09;。本文将详细介绍这两种线缆的特点、优势和适用场景&#xf…

想提高办公效率和质量的系统都有哪些?

我们这一波人是幸运的&#xff0c;从毕业后参加工作就开始接触到各种的办公软件&#xff0c;第一次让我觉得神奇且实用的就是office&#xff0c;可以根据场景进行不同的分类使用。 后来又有电子邮件、门户网站、聊天工具、财务软件、智能手机等不同的电子化工具陆续出现...而进…

实用的查询网站

1. 元器件网站 ALLDATASHEETCN.COM - 电子元件和半导体及其他半导体的数据表搜索网站。 热门电子元器件搜索 2. 聆思科技CSK6系芯片资料 CSK6 是聆思科技新一代的 AI 芯片 SoC 产品系列,采用多核异构架构,集成了 “星辰” ARM Star MCU、HiFi4 DSP以及聆思全新设计的 AI 神…

云原生架构(CloudNative)|文末送资料:马-云原生微服务治理大厂冲刺班56期

目录 文末福利&#xff1a;送资料 前言 一、部署架构发展史 二、三大技术基石 三、云原生的优点&#xff1a; 文末福利&#xff1a;送资料 云原生-马哥-云原生微服务治理大厂冲刺班56期[完结 第01节全新马哥Linux云计算高薪就业实战班VIP体验课 第02节ceph企业级存储实…

统一威胁情报如何赋能SOC应对复杂威胁?

安全运营中心&#xff08;SOC&#xff09;是组织网络安全战略的核心组成部分&#xff0c;扮演着至关重要的角色。其负责实时监控整个IT基础设施&#xff0c;以检测、响应和预防各类网络安全威胁。网络安全威胁日益复杂且多变的数字化时代&#xff0c;攻击平面泛化、基础设施复杂…

python爬虫-----深入了解 requests 库下篇(第二十六天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

PFA容量瓶耐受强酸强碱进口特氟龙材质定容瓶

PFA容量瓶&#xff0c;也叫特氟龙容量瓶&#xff0c;是用于配制标准浓度溶液的实验室器皿&#xff0c;是有着细长颈、梨形肚的耐强腐蚀平底塑料瓶&#xff0c;颈上有标线&#xff0c;可直接配置标准溶液和准确稀释溶液以及制备样品溶液。 因其有着不易碎、材质纯净、化学稳定性…

【数据结构|C语言版】算法效率和复杂度分析

前言1. 算法效率2. 大O的渐进表示法3. 时间复杂度3.1 时间复杂度概念3.2 时间复杂度计算举例 4. 空间复杂度4.1 空间复杂度的概念4.2 空间复杂度计算举例 5. 常见复杂度对比结语 ↓ 个人主页&#xff1a;C_GUIQU 个人专栏&#xff1a;【数据结构&#xff08;C语言版&#xff09…

Linux开发板配置静态IP

1、查看网口信息&#xff0c;易知eth0无IP地址 ifconfig2、首先分配一个IP地址 sudo ifconfig eth0 192.168.5.8 up3、此时配置的IP地址只是临时的&#xff0c;当你reboot重启板子上电后&#xff0c;ip地址会消失&#xff0c;因此需要为板子配置静态ip&#xff0c;避免每次上…

13 JavaScript学习:运算符

JavaScript 运算符 JavaScript 中有多种类型的运算符&#xff0c;包括以下几类&#xff1a; 算术运算符&#xff1a;用于执行基本的数学运算&#xff0c;如加法&#xff08;&#xff09;、减法&#xff08;-&#xff09;、乘法&#xff08;*&#xff09;、除法&#xff08;/&a…
最新文章