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

C语言(15)-------------->一维数组

这篇文章介绍的是数组的定义、创建、初始化、使用,在数组中输入内容并输出数组中的内容,并探讨了数组在内存中的存储。里面有些内容建议大家参考下面的一些文章,有助于加深大家对于C语言的理解:

C语言(2)------->数据类型介绍  CSDN

C语言(3)-------->变量   CSDN 

C语言(5)--------->printf函数  CSDN

C语言(6)------->scanf函数   CSDN

C语言(12)--------->for循环   CSDN

一、一维数组的定义

我们学习过变量,变量通常是用于存储某一个数据类型。例如,我们要表示一个人的年龄如何定义呢?年龄是一个整数,我们可以使用int型给它存储起来,例如这样:

int age;

在生活中,只存储一个数字的情况其实是非常少的。例如,一个班级里面有50个人,我们要存储这个班级的数学成绩,用什么去存储呢?这时候就要使用到数组了。

那什么是数组呢?C语言规定,一组相同类型的元素的组合就是数组。

二、一维数组的创建

在C语言中,数组的语法是怎样的呢?

 数据类型 数组名[]

注意:[]里面放的内容是数字,这个数字是正整数。例如,要放10个数字,我们可以在[]里面填10。(当然填10以上的数字也是可以的

 我们看一组数据:

1 2 3 4 5 6 7 8 9 10 

上面都是整数,那我们就可以使用整型数组来存储它们。

int Grade[10];

数组里面存的值我们就称为数组元素。

使用数组时,可以根据我们的需要去设计。

例如,我们要存放26个字母。我们怎么使用数组呢?

 分析:

字母是字符类型,那我们的数据类型就使用的是char类型。

有26个字母,那么[]里面的数字就是26。

所以,它的创建方式是这样:

char letter[26];//letter的中文就是字母

 三、一维数组的初始化

一维数组的初始化有两种形式,完全初始化、不完全初始化。

在初始化之前,我给大家复习一下变量的初始化。

int age;//定义一个整型变量
int Grade = 100;//定义一个整型变量并将它初始化为100

初始化就是给这个变量一个数值。

3.1完全初始化

完全初始化就是将数组的大小全部填满。

例如:

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

3.2不完全初始化

完全初始化就是将数组的大小填一部分。

int arr[6] = {1,2,3};

温馨提示: 

数组如果初始化了,可以省略数组的大小设定,因为编译器会根据数组初始化的内容来确定数组的真实大小。

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

四、数组的类型

数组是自定义的数据类型。在C语言中,去掉数组名就是数组的类型。

例如:

int arr[10];

上面这个数组的数据类型就是去掉arr,也就是int [10]。

五、数组的使用

在C语言中,数组存放在内存中,这个章节先不深入探讨。

为了方便讲解,我们可以理解为一个数组中如果有10个元素,那这10个元素之间的关系好比宾馆中10间编号连着的房间,例如401 402 403  ......409 410。 

我们创建并初始化一个数组来来解释。

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

1到10的关系好比下面的格子:

 

这十个数字好比十个人住在十个单间里面。每一个单间实际上都有一个编号。编号是从0开始的。

这十个数字是由十个下标组成的。我们如果要查找某一个数字查找它的下标就可以了。

那如果我们要找到7这个数字怎么办呢?我们知道它的编号是6,那么我们如何访问它呢?这个时候就要使用C语言中的一个操作符——下标引用操作符[]

参考代码:

#include <stdio.h>

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d\n",arr[6]);
	return 0;
}

运行结果:

知道如何访问数组了,现在我们可以来一个练习。

一个数组中存放了1到10这10个整数,请将这10个整数打印出来。

参考代码:

#include <stdio.h>

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ",arr[i]);
	}
	return 0;
}

运行结果:

六、将数据输入数组中,并取出数组的值

 我们知道数组的下标是从开始的,如果我们创建了1个数组大小为6的数组。那么下标是从0开始到5结束。

从一个大小为6的数组中输入数字,并且将它们打印在屏幕上如何实现呢?

分析:

1.开辟一个数组,数组中可以存放6个整数

2.输入数字

3.打印数字

参考代码:

#include <stdio.h>

int main()
{
	//1.开辟一个数组,数组中可以存放6个整数
	int arr[6] = {0};
	int i = 0;
	//2.输入数字
	for (i = 0; i < 6; i++)
	{
		scanf("%d",&arr[i]);
	}
	//打印数字
	for (i = 0; i < 6; i++)
	{
		printf("%d ",arr[i]);
	}
	return 0;
}

运行结果:

 七、数组在内存中的存储

我们买回来一台电脑之后,电脑中有内存,内存的作用是什么呢?

计算机处理的数据都需要加载在内存中处理。

然而内存又会被划分为一个一个的内存单元。通常来说一个内存就是一个字节。通过编号可以找到内存单元。编号也称为地址,在C语言中地址就是指针。

占位符%p用于表示指针的占位,指针就是地址。如果我们要使用printf函数打印地址,可以使用%p这个占位符。

创建一个数组,这个数组里面可以存放10个数字,那我们怎么知道这十个数组的地址呢?

参考代码:

#include <stdio.h>

int main()
{
	//1.开辟一个数组,数组中可以存放10个整数
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	//2.打印地址
	for (i = 0; i < 6; i++)
	{
		printf("&arr[%d]=%p\n",i,&arr[i]);
	}
	return 0;
}

x64环境下运行结果:

x86环境下运行结果:

 

 我们可以看到,数组在内存中是连续存放的。随着下标的增加,地址是由小到大的。

 八、数组大小的计算

数组是有大小的,那我们如何去计算数组的大小呢?

这里就要使用到sizeof这个关键字去计算了。

sizeof用于计算变量或类型的长度。

sizeof我简单举个例子。对它感兴趣或者想要知道更多的用法可以参考我之前的博客:

C语言(2)------->数据类型介绍中的3.1sizeof操作符介绍 CSDN

(1)sizeof的使用

计算一个整型的大小:

代码:

#include <stdio.h>

int main()
{
	int a = 10;
	printf("%d\n",sizeof(a));//计算a变量的大小
	printf("%d\n", sizeof(int));//计算整型的大小
	return 0;
}

运行结果:

我们知道一个整型所占的字节数是4。

(2)sizeof在数组中的使用

那么一个存放了10个整型的数组它的大小是多少呢?我们如何通过C语言去计算呢?

参考代码:

#include <stdio.h>

int main()
{
	int arr[10] = {0};
	printf("%d\n", sizeof(int));//计算整型的大小
	printf("%d\n", sizeof(arr));
	return 0;
}

运行结果:

 这里我们可以看到计算的是数组的总大小。

(3)sizeof计算数组中的某个元素的大小

我们现在有一个存放了10个字母的数组,如果我要看第二个字符所占的大小,我们如何计算呢?(当然,这是一个常识问题,学过数据类型的都知道字符所占的字节数是1)

参考代码:

#include <stdio.h>

int main()
{
	char arr[10] = { 0 };
	printf("%d\n", sizeof(char));//计算字符类型的大小
	printf("%d\n", sizeof(arr[1]));
	return 0;
}

运行结果:

(4)计算数组的大小 

参考代码:

#include <stdio.h>

int main()
{
	int arr[] = { 1,2,3,4,5,6,7 };
	printf("%d\n", sizeof(arr));//计算数组的大小
	return 0;
}

运行结果:

(5)计算数组元素的个数 

参考代码:

#include <stdio.h>

int main()
{
	int arr[7] = { 1,2,3,4,5,6,7 };
	printf("%d\n", sizeof(arr));//计算数组的大小
	printf("%d\n", sizeof(arr)/ sizeof(arr[0]));//计算数组的个数
	return 0;
}

运行结果:

 未定义数组大小可以计算出数组的大小:

参考代码:

#include <stdio.h>

int main()
{
	int arr[] = { 1,2,3,4,5,6,7 };
	printf("%d\n", sizeof(arr));//计算数组的大小
	printf("%d\n", sizeof(arr)/ sizeof(arr[0]));//计算数组的个数
	return 0;
}

运行结果:

 

相关文章:

  • Kubernetes (K8S) 核心原理深度剖析:从架构设计到运行机制
  • 【音视频】编解码相关概念总结
  • 什么是Ollama?什么是GGUF?二者之间有什么关系?
  • gRPG协议
  • 【已解决】JupyterLab:如何在JupyterLab中切换内核
  • 【Linux网络】数据链路层 其他常见的协议
  • 运算放大器噪声
  • nz-upload 手动上传 PDF预览
  • 树莓派简单操作系统制作之四:关于异常等级
  • 51c嵌入式~电路~合集13
  • 深度学习-135-LangGraph之应用实例(四)构建RAG问答系统同时对文档进行元数据增强
  • 游戏开发微信小程序--工具箱之父
  • 基于javaweb的SSM+Maven鲜花商城管理系统设计和实现(源码+文档+部署讲解)
  • Qt for Android下QMessageBox背景黑色、文字点击闪烁
  • 深入探讨Ceph:分布式存储架构的未来
  • 类和对象——拷贝对象时的一些编译器优化
  • AI绘画软件Stable Diffusion详解教程(3):Windows系统本地化部署操作方法(通用版)
  • Mybatis的分页插件
  • 视频级虚拟试衣技术在淘宝的产品化实践
  • 【Linux基础】Linux下的C编程指南
  • 周慧芳任上海交通大学医学院附属上海儿童医学中心党委书记
  • 国家统计局:4月全国城镇调查失业率为5.1%,比上月下降0.1个百分点
  • 石家庄桥西区通报“中药液”添加安眠药问题:对医院立案调查
  • 证监会披露两起操纵市场处罚结果,今年来涉操纵股票罚没金额超7.5亿元
  • 中国旅马大熊猫“福娃”和“凤仪”启程回国
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”