C语言:数组
创始人
2024-05-18 20:03:33
0

往期文章

  1. C语言:初识C语言
  2. C语言:分支语句和循环语句
  3. C语言:函数

目录

  • 往期文章
  • 前言
  • 1. 一维数组的创建和初始化
    • 1.1 数组的创建
    • 1.2 数组的初始化
  • 2. 一维数组的使用
  • 3. 一维数组在内存中的存储
  • 4. 二维数组的创建和初始化
    • 4.1 二维数组的创建
    • 4.2 二维数组的初始化
  • 5. 二维数组的使用
  • 6. 二维数组在内存中的存储
  • 7. 数组作为函数参数
  • 后记

前言

hello大家好,过了个年摆了好几天,今天终于想起来要更新了。坚持啊坚持。今天我们来介绍数组部分。闲言少叙,开始肝。

1. 一维数组的创建和初始化

数组是一组相同类型元素的集合。

1.1 数组的创建

type_t arr_name [const_n];
//type_t 是指数组的元素类型
//const_n 是一个常量表达式,用来指定数组的大小

我们来看一些实例:

#includeint main()
{//代码1int arr1[10];//代码2int count = 10;int arr2[count];//数组时候可以正常创建?//代码3char arr3[10];float arr4[1];double arr5[20];
}

我们发现arr2无法正常创建。
在这里插入图片描述
这提示我们:数组创建, [] 中要给一个常量才可以,不能使用变量。
数组中放变量,是变长数组,在c99中才引入的,很多编译器并不支持,我们的vs2013,2017,2019都不太友好,所以大家不要这样写。

1.2 数组的初始化

数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。
来看一些实例:

int arr1[10] = {1,2,3};
int arr2[] = {1,2,3,4};
int arr3[5] = {1,2,3,4,5};
char arr4[3] = {'a',98, 'c'};
char arr5[] = {'a','b','c'};
char arr6[] = "abcdef";

但是对于下面的代码要区分,内存中如何分配的。

#includeint main()
{char arr1[] = "abc";char arr2[3] = { 'a', 'b', 'c' };
}

在这里插入图片描述
我们调用监视窗口发现,arr1中有4个元素,arr2中有三个元素。我们打印内容再来看一下:
在这里插入图片描述

arr2最后有一段乱码。
这就提示我们,字符数组中,要有\0,我们在【】中设置的数组大小要考虑到\0.
\0作为字符串的结束标志是十分重要的。

2. 一维数组的使用

对于数组的使用我们之前介绍了一个操作符: [] ,下标引用操作符。它其实就数组访问的操作符。
我们来举一个例子看数组的使用:

#include 
int main()
{int arr[10] = { 0 };//数组的不完全初始化//计算数组的元素个数int sz = sizeof(arr) / sizeof(arr[0]);//对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以:int i = 0;//做下标for (i = 0; iarr[i] = i;}//输出数组的内容for (i = 0; iprintf("%d ", arr[i]);}return 0;
}

在这里插入图片描述
数组是使用下标来访问的,下标是从0开始。 数组的大小可以通过计算得到,我们也可以将sz换成10,但是用sz可以减小我们调整数组大小的时候对接下来操作的影响。
数组大小计算代码如下:

int sz = sizeof(arr) / sizeof(arr[0]);

3. 一维数组在内存中的存储

#include 
int main()
{
int arr[10] = {0};
int i = 0;
for(i=0; i
printf("&arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}

在这里插入图片描述
仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。 由此可以得出结论:数组在内存中是连续存放的

在这里插入图片描述
这为我们通过指针访问数组提供了基础。

4. 二维数组的创建和初始化

4.1 二维数组的创建

//数组创建
int arr[3][4];
char arr[3][5];
double arr[2][4];

二维数组创建可以省略行,但不能省略列。

4.2 二维数组的初始化

//数组初始化
int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{4,5}};
int arr[][4] = {{2,3},{4,5}};

二维数组的初始化默认是先放一行再放下一行,如果需要每一行放个数不一样可以用{}括起来。

5. 二维数组的使用

二维数组也是通过下标访问的。我们通过双重循环来实现其赋值和打印。

#include 
int main()
{int arr[3][4] = { 0 };int i = 0;for (i = 0; i<3; i++){int j = 0;for (j = 0; j<4; j++){arr[i][j] = i * 4 + j;}}for (i = 0; i<3; i++){int j = 0;for (j = 0; j<4; j++){printf("%d ", arr[i][j]);}}return 0;
}

在这里插入图片描述

6. 二维数组在内存中的存储

#include 
int main()
{
int arr[3][4];
int i = 0;
for(i=0; i<3; i++)
{
int j = 0;
for(j=0; j<4; j++)
{
printf("&arr[%d][%d] = %p\n", i, j,&arr[i][j]);
}
}
return 0;
}

在这里插入图片描述
在这里插入图片描述
二维数组的地址也是连续的。二维数组的每一行是一维数组。

7. 数组作为函数参数

数组作为函数参数传递时,传入的是数组首地址,并非数组本身。

后记

好的,关于数组就分享到这里了。希望对大家有所帮助。最近一学习就脑瓜子疼,这毛病咋治啊啊啊啊啊……

在这里插入图片描述

相关内容

热门资讯

嘉兴旅游景点简介及导游词 嘉兴旅游景点简介及导游词  嘉兴,自古为富庶繁华之地,素有“鱼米之乡,丝绸之府”之美誉。嘉兴旅游资源...
董永公园导游词 董永公园导游词范文  各位游客,欢迎光临孝感董永公园,我是(导游词),我代表我们旅行社欢迎大家到汉孝...
介绍趵突泉的导游词 介绍趵突泉的导游词  作为一名乐于助人的导游,常常需要准备导游词,导游词是讲解当地的基本情况,介绍风...
张家口大镜门的英文导游词 张家口大镜门的英文导游词  Hello,everyone!  Welcome to name is ...
云南丽江古城导游词 云南丽江古城导游词 15篇  作为一名乐于为游客排忧解难的导游,总不可避免地需要编写导游词,导游词事...
杭州花港观鱼导游词 杭州花港观鱼导游词范文  作为一名专门引导游客、助人为乐的导游,编写导游词是必不可少的,导游词具有注...
吉林市松花江导游词 吉林市松花江导游词3篇  作为一位尽职的导游,时常要开展导游词准备工作,导游词事实上是一种对旅游景点...
北京圆明园的导游词 北京圆明园的导游词  圆明园位于北京市西郊,海淀区东部。原为清代一座大型皇家御苑,占地约5200亩,...
沙澧公园导游词 沙澧公园导游词  大家好!欢迎大家来到美丽的漯河,来到美丽的沙澧公园。我姓张,今天由我来为大家服务!...
蒋氏故居导游词 蒋氏故居导游词  蒋氏故居位于浙江省宁波市奉化区溪口境内,昔日蒋氏家族就于此地生活,工作,娱乐等。下...
安徽九华山的导游词 有关安徽九华山的导游词范文  九华山在皖南青阳县境内,是我国四大佛教名山之一。唐代文学家刘禹锡,登上...
阳龙导游词 阳龙导游词  游客朋友们大家好,今天我们一起来游览具有“天下第一缸”之称的云阳龙缸,我是大家今天行程...
世界地质奇观—阿斯哈图花岗岩... 世界地质奇观—阿斯哈图花岗岩石林的导游词  女士们、先生们:大家好!现在我们已经来到了国家4A级旅游...
洛阳牡丹导游词 洛阳牡丹导游词  作为一名具备丰富知识的导游,总归要编写导游词,导游词是导游员进行实地口语导游的基础...
常州恐龙园导游词 常州恐龙园导游词500字  作为一名专门为游客提供优质服务的导游人员,通常会被要求编写导游词,导游词...
河南天波杨府的导游词 河南天波杨府的导游词  天波杨府是北宋抗辽英雄杨业的府邸,原位于北宋首都东京(今开封)城内西北偶、天...
黄山松导游词 黄山松导游词  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播文化知...
龙门石窟导游词 龙门石窟导游词(通用21篇)  作为一名专门引导游客、助人为乐的导游,就不得不需要编写导游词,借助导...
韩国釜山导游词 关于韩国釜山导游词  各位游客,大家好,欢迎大家来到这韩国南部以"深水良港"而著称的釜山参观游览,我...
云南抚仙湖导游词 云南抚仙湖导游词  作为一位出色的导游人员,往往需要进行导游词编写工作,导游词由引言、主体和结语三部...