首页 > 系统相关 >【笔记】二维数组在内存地址中的存储

【笔记】二维数组在内存地址中的存储

时间:2023-09-09 11:35:37浏览次数:51  
标签:arr int 笔记 二维 数组 内存地址 define

最近在学习STM32的ADC和DMA多通道采集过程中有使用到二维数组,姑且记录一下以作备忘。
参考:http://c.biancheng.net/view/2022.html


举个例子就能很简单的说明了
创建一个M行N列的int数组,数组定义如下(例:M=3 N=5)

#define M 3 
#define N 5
int arr[M][N];

给数组按顺序赋值

int (*p)[N] = arr;
for(int i=0; i<M*N; i++)
{
  *(*p+i) = i+1;  //按照数组在内存地址中的存储顺序依次赋值1~15
}

再将其按M行N列的格式打印出来

for(int i=0; i<M; i++)
{
  for(int j=0; j<N; j++)
  {
    printf("%4d ", arr[i][j]);
    if(j==N-1) printf("\n");
  }
}

结果为

   1    2    3    4    5 
   6    7    8    9   10 
  11   12   13   14   15 

小结

抽象得看二维数组是一个矩阵,按照从左至右,从上到下的顺序存储数值,实际上在内存中是连续一片的
反过来说,将连续一片的内存数据读取为二维数组,如果要按照通常的理解方式来,就应当一行一行的读。再具体一点:要读取M组N个数据,第一次读的N个数据作为二维数组的第一行、第二次读N个数据作为数组的第二行,以此类推最终得到一个M行N列的数组。

标签:arr,int,笔记,二维,数组,内存地址,define
From: https://www.cnblogs.com/T3rra/p/17689047.html

相关文章

  • 莫队算法学习笔记
    莫队普通莫队这个很基础。带修莫队就在普通莫队的基础上加上时间这一维度。[P1903国家集训队]数颜色/维护队列回滚莫队为什么要回滚?因为有些信息不好撤销,比如区间众数。和普通莫队相比较,就是对于每一个块,左端点放在块的右端点处,每次向左扩展,......
  • 学习笔记1 代码
    学习所用代码test.c#include<stdio.h>intmain(){printf("hello");return0;}hello.h#ifndef_HELLO_H#define_HELLO_H/***fuction:printhellostring.*parm:void*returnvalue:void*/voidsay_hello()......
  • ACM模式下快速读取二维数组
    ACM二维数组的读取输入550100001110000000111000010读取Scannerin=newScanner(System.in);introw=in.nextInt();intcol=in.nextInt();int[][]arr=newint[row][col];for(inti=0;i<row;i++){for(intj=0;j<col......
  • 红日ATT&CK系列靶场(五)笔记
    环境搭建第一次登录会提示需要更改账号密码。win7账号密码:sun\heart123.comsun\Administratordc123.com—————————————————————————————————————————————————————————————2008账号密码sun\admin20......
  • 新人笔记-继承简略
    packagecom_black.jicheng;//调试类publicclassDemo{publicstaticvoidmain(String[]args){//创建对象调用方法fuc=newfu();c.show();ziz=newzi();z.method();z.show();}}packagecom_black......
  • 算法通关村第一关——链表青铜挑战笔记
    算法通关村第一关——链表青铜挑战笔记链表是一种经典的数据结构,在很多软件里大量使用,例如操作系统、JVM等。在面试中链表题目数量少,类型也相对固定,考察频率却非常高,因此我们只要将常见题目都学完就万事大吉了,所以链表特别值得刷。单链表的概念链表的概念单向链表就像一个......
  • c语言学习之路--static的用法(笔记)
    1.static修饰局部变量时可以理解为将局部变量变为全局变量,如图:#include<stdio.h>voidtest(void){ inta=1; a++; printf("a的值为%d\n",a); }intmain(void){ inti=0; while(i<5){ i++; test(); } return0;}没有static时结果为a的值为2a的值为2......
  • 学习笔记1
    目录知识点归纳苏格拉底挑战问题与解决思路实践过程先让chatgpt给我点linux命令,我来实践知识点归纳苏格拉底挑战问题与解决思路我下载了虚拟机,并装好了镜像文件,但是对于linux命令行的环境尚未配置,我咨询chatgpt给我回答实践过程先让chatgpt给我点linux命令,我来实践......
  • 【刷题笔记】42. Trapping Rain Water
    题目Givennnon-negativeintegersrepresentinganelevationmapwherethewidthofeachbaris1,computehowmuchwateritisabletotrapafterraining.Theaboveelevationmapisrepresentedbyarray[0,1,0,2,1,0,1,3,2,1,2,1].Inthiscase,6unitsof......
  • spdlog 使用学习笔记
    spdlog使用学习笔记部分内容参考了《spdlog使用_CSDN》这篇文章。1.spdlog简介github地址:https://github.com/gabime/spdlogspdlog是一个C++的日志管理工具库。2.spdlog的安装2.1.使用包管理器安装Debian:sudoaptinstalllibspdlog-devHomebrew:brewinstallspd......