二维数组_内存结构|学习笔记

简介: 快速学习二维数组_内存结构

发者学堂课程【C语言学习教程二维数组_内存结构】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/387/detail/4901


二维数组_内存结构


内容介绍:

一、二维组数的内存存储

二、验证二维数组内存的连续性

三、练习


一、二维组数的内存存储

二维数组的元素在内存存储上是连续的,我们可以通过如下程序来验证结果:

int arr[3][5],I,j;

   for(i=0; i<3; i++) {

      for(j=0; j<5; j++)

   print(“&ar[%d][%d]=%p arr[%d][%d]=%d\n”,i,j,&arr[i]

[j]i,j,arr[i][j]);

}

}

上述程序验证的方法:

通过%p 来打印变量地址


二、验证二维数组内存的连续性

1.若其内存地址按规律变化,则其是连续的。

2.了解%p

int a = 10;

printf ("%p\n",&a);

for (int i=0; i<3; i++) {  

   for (int j=0; j<4; j++) {

       printf("%p ",&array[i] [j]);

   }

printf("\n");

}

二维数组名字是整个二维数组内存起始地址,也是二维数组中第一个子数组内存起始地址

array[0]是第一个数组的首地址,而 array 是整个二维数组的首地址。


三、练习

1、矩阵加法:

定义两个大小相同的二维数组,并初始化。

分别输出两个二维数组的值,以及两个数组相同位置上的值相加以后的结果

答:首先编两个大小相同的二维数组

再把每一个数组元素的值都打印出来,并且打印出对应位置上的数之和

int arr1[2][3] ={1,2,3,4,5,6}

int arr2[2][3] = {10,20,30,40,50,60}

for (int i=0; i<2; i++) {

for (int j=0; j<3; j++) {

printf ("%d+%d=%d" ,arr1[i][j],arr2[i] [j],arr1[i]lj]+arr2[i] [j]);

 }

putchar(‘\n’);

}

相关文章
|
5月前
|
存储 Java 编译器
深入理解JVM系列教程(02) - Java内存结构
深入理解JVM系列教程(02) - Java内存结构
144 0
|
5月前
【深入理解计算机系统】int 不是整数 | float 不是实数 | 内存引用错误的例子 | 学习笔记
【深入理解计算机系统】int 不是整数 | float 不是实数 | 内存引用错误的例子 | 学习笔记
36 0
|
1月前
|
存储 Java C++
JVM内存模型和结构详解(五大模型图解)
JVM内存模型和结构详解(五大模型图解)
|
6月前
|
存储 编译器 C语言
结构体类型的结构在内存的存储
结构体类型的结构在内存的存储
|
9月前
|
存储 Java 编译器
【Java面试】说说JVM的内存结构以及他们那些会产生内存溢出?
【Java面试】说说JVM的内存结构以及他们那些会产生内存溢出?
521 0
|
4月前
|
存储 缓存 算法
JVM【带着问题去学习 01】什么是JVM+内存结构+堆内存+堆内存参数(逃逸分析)
JVM【带着问题去学习 01】什么是JVM+内存结构+堆内存+堆内存参数(逃逸分析)
33 0
|
4月前
|
存储 前端开发 Java
深入解析JVM内存结构:Metaspace、堆与垃圾收集器
深入解析JVM内存结构:Metaspace、堆与垃圾收集器
|
5月前
|
存储 算法 安全
面试~jvm(JVM内存结构、类加载、双亲委派机制、对象分配,了解垃圾回收)
面试~jvm(JVM内存结构、类加载、双亲委派机制、对象分配,了解垃圾回收)
53 0
|
6月前
|
存储 缓存 监控
JVM第一讲:内存结构和内存分配,内存溢出和内存泄露
JVM第一讲:内存结构和内存分配,内存溢出和内存泄露
|
7月前
|
Linux
底层开发必知的三个内存结构概念
底层开发必知的三个内存结构概念
底层开发必知的三个内存结构概念

热门文章

最新文章