通过指针引用多维数组

news/2024/12/12 17:25:42/文章来源:https://www.cnblogs.com/szyw/p/18603047

相较于一维数组,二维数组可以理解为数组中的数组,而用指针引用二维则与二级指针有关。
难点是与一维数组有重合部分但赋予了新概念。
设a为二维数组名,从二维数组角度看,代表第零行零列元素a【0】【0】即&a【0】【0】也就是二维数首元素的地址,指向a【0】也称0行起始地址,此时的首元素并不代表一个整形元素,而是代表一个由4个整型元素所组成的一维数组,这里统一二维数组为a【3】【3】。
这里做下区分和定义。
a+1代表第一行零列起始地址,a+n(自然数)代表第几行,,a【n】+n代表列的增加(只有在出现行时,也就是出现a(数组名)【n】后面加数代表列的移动);
a+n指向a【n】,或者说a+n是a【n】的地址,当(a+n)时与a【n】等价(a+1=a【n】实际是将指针a向后移动了一行的元素乘以字节,如a的地址为2000,那么a+1是2000+3X4=2016,一行有三个元素,4为字节数);
**着重强调
(a+0)存放的是a【0】所指向元素的地址,而a【0】本身就是所指向元素的地址a取出的是所指向元素的地址a)才可取出元素的值**
image
image
若用一个指针变量pt来指向一维数组,应这样定义
int (
pt)【4】;
表示pt指向由4个整型元素组成的一维数组。
接下来引入行列,a(二维数组名)指向行,为自身的地址,*a【1】指向列即所要取元素地址,当在加上&时指向列又指向了行。&a【0】与&a【i】等价。
`#include<stdio.h>

int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
printf("%d,%d\n",a,(a+0));
printf("%d,%d\n",a[0],
(a+0));
printf("%d,%d\n",&a[0],&a[0][0]);
printf("%d,%d\n",a[1],a+1);
printf("%d,%d\n",&a[1][0],(a+1)+0);
printf("%d,%d\n",a[2],
(a+2));
printf("%d,%d\n",a[1][0],((a+1)+0));
printf("%d,%d\n",a[2],((a+2)+0));

return 0;
}`
效果图辅助理解
image

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

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

相关文章

Slick/Slick.js使用方法(个人总结)/Slick.js介绍(转载,仅个人收藏使用)

转载,仅学习收藏使用!Slick/Slick.js使用方法(个人总结)/Slick.js介绍 相比于Swiper而选择使用Slick.js的原因主要是因为其兼容不错并且在手机端的滑动效果更顺畅官方参数介绍:官方地址参数  类型 默认值 描述accessibility 布尔值 TRUE 启用Tab键和箭头键导航adaptiveHe…

RenderDoc在Texture View中使用自定义的Shader

简单介绍一下如何在RenderDoc中使用Channels设定为Custom后的Shader; 官方文档:How do I use a custom visualisation shader?在Texture View中设置Channels为Custom; 输入新创建的Shader名称及后缀;点击绿色加号创建Custom Shader,创建的hlsl保存会在C:\Users\PC\AppDat…

ASE50N06-ASEMI中低压N沟道MOS管ASE50N06

ASE50N06-ASEMI中低压N沟道MOS管ASE50N06编辑:ll ASE50N06-ASEMI中低压N沟道MOS管ASE50N06 型号:ASE50N06 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:50A 漏源击穿电压:60V RDS(ON)Max:15mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、低压MOS管 漏电流:…

【算法基础】图的存储与遍历

一、图的存储 在我们存储图的时候,主要使用邻接矩阵、邻接表两种方式来存储。通常邻接矩阵存储稠密图(边多),临界矩阵存储稀疏图(边少)。1.1 邻接矩阵存储 邻接矩阵听起来比较高大上,其实就是用二维数组来表示 \(a\) 点与 \(b\) 点之间有一条边。例如在上述无向图中 \(1…

解决Pandas的to_excel()写入不同Sheet,而不会被重写

一、问题描述 在使用Pandas的to_excel()方法写入数据时,当我们想将多个数据写入一个Excel表的不同DataFrame中,虽然能够指定sheet_name参数,但是会重写整个Excel之后才会存储。 现在有3个sheet,内容如下:>>> import pandas as pd >>> df1 = pd.read_exc…

基于Transformer的生成式人工智能模型的训练和推理以及成员推断攻击的实现

Transformer_AI 2024年11月15日更新 在此教程中,我们将对基于Transformer的生成式人工智能模型及其原理进行一个简单的介绍,并实现其训练和推理过程,且至少支持3种数据集,目前支持数据集有:MNIST、fashionMNIST、CIFAR10等,并给用户提供一个详细的帮助文档。 目录 基本介…

协作文档的核心逻辑:秩序性如何赋能团队?

协作文档:秩序性的数字化创新 在当今高速发展的信息化社会中,协作文档已经成为团队合作和企业运作的重要工具。协作文档不仅提供了便捷的协作环境,更为高效的任务管理和知识共享带来了全新的可能。然而,真正出色的协作文档不只是一个工具,它更是一种体现秩序性的管理理念。…

macOS Sonoma 14.7.2 (23H311) 正式版 ISO、IPSW、PKG 下载

macOS Sonoma 14.7.2 (23H311) 正式版 ISO、IPSW、PKG 下载macOS Sonoma 14.7.2 (23H311) 正式版 ISO、IPSW、PKG 下载 利用小组件进行个性化设置、令人眼前一亮的全新屏幕保护、Safari 浏览器和视频会议的重大更新 请访问原文链接:https://sysin.org/blog/macOS-Sonoma/ 查看…

前端性能优化实战:从加载到渲染的全链路提速

"网站太慢了,用户都在抱怨!"上周,我接手了一个正在运行的电商项目,首屏加载时间竟然长达 8 秒。作为一个对性能有执念的前端开发者,这个数字让我夜不能寐。经过一周的优化,我们把首屏时间压缩到了 2 秒以内。今天,我想和大家分享这个过程中的实战经验。😊 性…

转载:【AI系统】算子手工优化

在上一篇中,探讨了算子计算和调度的概念,并强调了高效调度策略在释放硬件性能和降低延迟方面的重要性。本文,我们将深入讨论手写算子调度时需要考虑的关键因素,并介绍一些著名的高性能算子库。 计算分析 在优化算子前,首先需要知道当前程序的瓶颈在哪里,是计算瓶颈还是访…

强化学习模型的训练和推理以及成员推断攻击的实现

Reinforcement_learning 2024年9月1日更新 在此教程中,我们将对强化学习模型及其原理进行一个简单的介绍,并实现一种强化学习模型的训练和推理过程,且至少支持3种数据集,目前支持数据集有:MNIST、fashionMNIST、CIFAR10等,并给用户提供一个详细的帮助文档。 目录 基本介绍…