当前位置: 首页 > ops >正文

C语言之旅【6】--一维数组和二维数组

目录

数据类型的分类🎉

数组的分类🍿

一维数组🍔

一维数组格式🌮

一维数组的使用🧀

一维数组的输出🌭

一维数组的输入🎗

一维数组的特点🌮

二维数组🍔

二维数组的格式🧀

二维数组的使用🎉

二维数组逻辑上的存储格式🌭

二维数的本质存储🍿

二维数组要注意的点🌮

数组传参的使用🥨

一维数组的传参🍿

二维数组的传参😜

二维数组传参注意要点❤

彩蛋时刻 !!!


💫只有认知的突破💫才能带来真正的成长💫编程技术的学习💫没有捷径💫一起加油💫

           🍁感谢各位的观看🍁欢迎大家留言🍁咱们一起加油🍁努力成为更好的自己🍁

数据类型的分类🎉

在C语言中,我们的数据类型就这几类。如图所示:

对于内置类型,我们已经很熟悉了。因为在有些场景中,我们描述一些对象的时候,内置类型的描述就无法满足我们的一些需求。所以,C语言就给我们提供了一些自定义类型方便我们更加准确的描述一个对象。对于结构体,联合体和枚举这三种自定义类型,我们已经在之前的博客已经详细的讲过了,大家可以前去观看。C语言之旅【6】--结构体,C语言进阶【8】--联合体和枚举。今天我们的重点是讲解数组

数组的分类🍿

数组的分类一位数组和二维数组(一维,二维最常用),理论上还有3,4,n维数组(不常用)。

一维数组🍔

一维数组是由一块连续的空间组成。它在逻辑和物理空间上都是线性的。如下所示的大概的样子:

一维数组格式🌮

代码格式:

[ 数据类型 ] [数组的名字] [要存储的数据个数]={ . . . . . .};

比如:我要存储10个int型的数据

           int arr [10]={1,2,3,4,5,6,7,8,9,10};

一维数组的使用🧀

一维数组的输出🌭

对于一维数组的使用,我们是通过下标进行访问的。数组的最低位是从0下标开始访问的一直到n-1位。(n为数组的元素个数)。如下图所示:

 代码展示:

#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8 };printf("%d\n", arr[0]);	//通过0下标访问数据1return 0;
}

运行结果:

一维数组的输入🎍

代码要求:

依次输入10个整数。

 如下所示的代码:

#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{int arr[10] = { 0 };for (int i = 0; i < 10; i++){scanf("%d", &arr[i]);}for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}

运行结果:

一维数组的特点🌮

【1】一维数组的下标和每个空间的地址都是递增。如图所示:

 存储的数据类型占有多少个字节,每个空间的地址就会相差多少个字节

 【2】数组名就是数组首元素的地址。如图所示:

所以,我们可以认为,数组名就是一个地址,我们还可以直接拿着数组名这个地址,直接通过解引用去使用。如下代码所示:

#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8 };printf("%d\n", *(arr + 2)); //访问数据3return 0;
}

运行结果:

二维数组🍔

二维数组的格式🧀

0[数据的类型]  数组名 [行数]  [列数]={.........};

二维数组的使用🎉

如下要求:

存储和打印一个3行,3列的数组

 如下代码:

#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };	//二维数组的存储for (int i = 0; i < 3; i++)		//二维数组的打印{for (int j = 0; j < 3; j++)printf("%d ", arr[i][j]);printf("\n");}return 0;
}

运行结果:

二维数组逻辑上的存储格式🌭

逻辑存储格式如下:

 二维数的输出和输入的形式和一维数组的输入和输出的形式一样的。所以,这里就不再对其赘述了。

二维数的本质存储🍿

其实二维数组的在内存中的存储不是“逻辑上”的样子。其实,它的本质是一连串的格式。如图所示:

二维数组要注意的点🌮

注意:二维数组的行可以省略,列不可以省略

数组传参的使用🥨

一维数组的传参🍿

如下所示的代码:

#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>void Print(int arr[])
{printf("%d \n", arr[0]);    //拿到arr打印第一个元素
}int main()
{int arr[12] = { 1,2,3,4,5,6,7,8 ,9,10,11,12};Print(arr);        //arr作为参数传过去return 0;
}

运行结果:

二维数组的传参😜

如下所示的代码:

#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>void Print(int arr[][3])
{printf("%d \n", arr[0][0]);    //打印0行0列的元素
}
int main()
{int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };	//二维数组的存储Print(arr);        //二维数组的传参return 0;
}

运行结果:

二维数组传参注意要点🥗

二维数组作为参数的时候,行可以省略,列不能省略。

彩蛋时刻 !!!

每章一句:“ 站在山顶的人,从不嘲笑山的高度, 因为他们曾亲手丈量过每一步崎岖。”

http://www.xdnf.cn/news/6963.html

相关文章:

  • dijkstra算法加训上 之 分层图最短路
  • Leetcode 3553. Minimum Weighted Subgraph With the Required Paths II
  • 【LeetCode 热题100】739:每日温度(详细解析)(Go语言版)
  • vue3大事件项目
  • 浅谈Frida 检测与绕过
  • RabbitMQ 工作模式(上)
  • MySQL事务的一些奇奇怪怪知识
  • linux本地部署ollama+deepseek过程
  • 大模型为什么学新忘旧(大模型为什么会有灾难性遗忘)?
  • EasyExcel动态表头
  • 【Java ee初阶】jvm(2)
  • 【Qt mainwindow 】窗口在启动时自动调整为适应屏幕大小
  • 正则表达式与文本处理的艺术
  • Selenium-Java版(css表达式)
  • go语法大赏
  • btc交易所关键需求区 XBIT反弹与上涨潜力分析​​
  • 深入理解Java中的Minor GC、Major GC和Full GC
  • 组态王|组态王中如何添加西门子1200设备
  • 2.2.4
  • 【数据结构】1-3 算法的时间复杂度
  • Zookeeper 入门(二)
  • Elasticsearch基础篇-java程序通过RestClient操作es
  • HarmonyOS 影视应用APP开发--配套的后台服务go-imovie项目介绍及使用
  • [创业之路-361]:企业战略管理案例分析-2-战略制定-使命、愿景、价值观的失败案例
  • VueUse/Core:提升Vue开发效率的实用工具库
  • 牛客网NC210769: 字母大小写转换问题解析
  • 灵光一现的问题和常见错误1
  • c++ 仿函数
  • [Android] 奇妙扫描 V1.0.7
  • Linux系统之----重定向