C语言高级教程-C语言数组(四):多维数组

简介: C语言高级教程-C语言数组(四):多维数组

519af561c47841048049da406898772a.jpg

一、本文的编译环境


本文的编译环境使用的是集成开发环境:Visual Studio 2019



e583c4cd01004969964d0c91d289bde1.png

Visual Studio 2019官网链接如下

Visual Studio 2019官网链接


5f3d0faf855a49e5b354fc888a2f32cf.png



Visual Studio 2019集成的开发环境的特点有


Visual Studio 2019默认安装Live Share代码协作服务。

帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。

Visual Studio IntelliCode AI帮助。

更好的Python虚拟和Conda支持。

以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等 。


二、二维数组的声明


二维数组可以声明如下


float carrots[25][50];


  • 这行语句声明了一个数组carrots,它包含25行50个浮点数元素。
  • 注意每一维都放 在自己的方括号中。

同样,可以用以下的语句声明另一个二维浮点数数组


float numbers[3][5];


与田里的蔬菜一样,使这些数组排成矩形会比较方便。把这个数组排成3行5列,

它们实际上按行顺序存储在内存中。

如下图所示

  • 3行5列元素数组在内存中的组织方式



388099d6728c4a9d9e06f718857b6c99.jpg


很容易看出,最右边的索引变化地最快。在概念上,左边的索引选择一行,右边的索引选择该行中的一个元素。


上图说明了如何将二维数组想象成一维数组, 其中的每个元素本身是一个一维数组。


可以将number数组视为3个元素的一-维数组,数组中的每个元素都含有5个float类型的元素。


第一行的5个float元素位于标记为numbers[0]的内存地址上,第二行的5个float 元素位于numbers[1],最后一行的 5个元素位于numbers[2]。


当然,分配给每个元素的内存量取决于数组所含的变量的类型。


double类型的数组需要的内存比float或int类型的数组多。


下图说明了数组numbers[4][10]的存储方式,该数组有4行10个float类型的元素


66954917a8754bba9663245ab059a864.jpg

  • 因为数组元素的类型是float,它在机器上占4个字节,这个数组占用的内存总数是 4X10X4个字节,即为160个字节。


三、三维数组的声明


三维数组是二维数组的扩展:

double beans[4] [10] [20]; // 4 fields, each with 10 rows of 20 beans
  • 这个语句声明的数组有800个元素,可以把它看作存储豆类植物的产量,豆类植物
    有三块田,每块田包含10行20列植物。
  • 根据需要,可以定义任意多维数组。


四、数组的声明程序编译结果


数组的声明程序编译结果如下所示

已启动重新生成…
1>------ 已启动全部重新生成: 项目: 5.4-多维数组, 配置: Debug Win32 ------
1>Main.c
1>E:\Document\2-programmLanguageExper\C\C语言入门经典\C语言入门经典\5.4-多维数组\Main.c(10,8): warning C4101: “carrots”: 未引用的局部变量
1>E:\Document\2-programmLanguageExper\C\C语言入门经典\C语言入门经典\5.4-多维数组\Main.c(11,8): warning C4101: “numbers”: 未引用的局部变量
1>E:\Document\2-programmLanguageExper\C\C语言入门经典\C语言入门经典\5.4-多维数组\Main.c(14,9): warning C4101: “beans”: 未引用的局部变量
1>5.4-多维数组.vcxproj -> E:\Document\2-programmLanguageExper\C\C语言入门经典\C语言入门经典\Debug\5.4-多维数组.exe
1>已完成生成项目“5.4-多维数组.vcxproj”的操作。
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========

编译程序运行结果如下所示

b9baa73d50c94c5dbde328f8b86c75ed.jpg


五、完整程序


本文的完整程序如下所示


5.1 Main.h 文件程序


#ifndef MAIN_H
#define MAIN_H
#include <stdio.h>
#include <stdlib.h>
#endif

5.2 Main.c 文件程序

#define _CRT_SECURE_NO_WARNINGS
#include "Main.h"
int main()
{
  system("color 3E");
  // 二维数组的声明
  float carrots[25][50];
  float numbers[3][5];
  // 三维数组的声明
  double beans[4][10][20]; // 4 fields, each with 10 rows of 20 beans
  system("pause");
  return 0;
}

六、总结

6067a0eb9a854f188d2078010ce75564.jpg


本文主要介绍了C语言高级编程的数组的多维数组的声明方式。

介绍了二维数组声明方式。

介绍了二维数组声明方式。

本文到这里就结束啦。

  • 希望本文的C语言数组的多维数组。
  • 能对你有所帮助。
相关文章
|
2天前
|
存储 编译器 C语言
C语言之数组
C语言之数组
24 0
|
2天前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
2天前
|
C语言
每天一道C语言编程(数组操作)
每天一道C语言编程(数组操作)
6 0
|
2天前
|
C语言
每天一道C语言编程(第一弹~):数组
每天一道C语言编程(第一弹~):数组
9 0
|
2天前
|
机器学习/深度学习 C语言
C语言三维数组的创建
该代码片段展示了如何在C语言中创建一个动态的3D数组。由于`n`在编译时未知,不能直接声明为`int f[n][n][n]`。正确的方法是使用`malloc`进行动态内存分配。首先分配`n`个`int **`,然后对每一层分配`n`个`int *`,最后每个元素分配`n`个`int`。之后可以使用这个3D数组,并在完成后正确释放内存。
11 2
|
2天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)
|
2天前
|
存储 C语言 索引
C语言多维数组名作函数参数的研究
C语言多维数组名作函数参数的研究
8 0
|
2天前
|
存储 C语言
C语言中字符串的引用与数组元素操作
C语言中字符串的引用与数组元素操作
23 0
|
2天前
|
存储 人工智能 程序员
爱上C语言:超详细讲解数组,学数组看这一篇就够了(数组篇)
爱上C语言:超详细讲解数组,学数组看这一篇就够了(数组篇)
|
2天前
|
编译器 程序员 C语言
【C语言】变长数组,二分查找和数组之间自动替换的实现
【C语言】变长数组,二分查找和数组之间自动替换的实现