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;
}
运行结果:
二维数组传参注意要点🥗
二维数组作为参数的时候,行可以省略,列不能省略。
彩蛋时刻 !!!
每章一句:“ 站在山顶的人,从不嘲笑山的高度, 因为他们曾亲手丈量过每一步崎岖。”