LinuxC——数组

本篇博客来介绍一下数组的相关知识。

一、什么是数组

数组是由数据类型相同的一系列元素组成。

需要使用数组时,通过声明数组告诉编译器数组中有多少个元素和这些元素的类型。

来看一下几个数组的声明

int   a[10];  //含有10个int类型的元素的数组
float b[10];  //含有10个float类型的元素的数组
char  c[10];  //含有10个char类型的元素的数组

[]表明a, b,  c都是数组,方括号中的数字表示这个数组所含有的元素的个数。

二、如何访问数组

上面我们声明了数组,那么应该怎么访问数组呢?

访问数组我们可以通过数组的下标(或者叫索引)来表示数组中的各元素,数组的下标都是从0开始的。a[0]就表示数组中的第一个元素,a[9]就表示数组中的最后一个元素。

三、初始化数组

初始化数组的时候,可以用以逗号分隔的值列表(用花括号括起来)来初始化数组,个元素值之间用逗号分隔开。

来看一个简单的例子。

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

我们打印所有数组中的元素可以使用一个for循环来打印

#include <stdio.h>

int main()
{
	int num[5] = {1,2,3,4,5};

	for(int i = 0; i < 5; i++)
	{
		printf("%d ", num[i]);
	}

	printf("\n");

	return 0;
}

打印出来的结果是 1 2 3 4 5。

以上是给所有的元素都初始化,现在来给前连个元素初始化看看会发现什么情况

将初始化的语句稍微改变一下就可以了

int num[5] = {1,2};

来看看结果是什么


结果变成了这样,没有初始化的元素都被默认初始化为0。那么是不是不用初始化数组,是不是数组中的内容都会被初始化为0呢?我们再改变一下例子,只声明数组,不给它初始化。

int num[5];

看看结果是否和我们预期的一样呢


这个时候数组中元素的值竟然变成了这样,是一些随机数,我们一般都叫这些值为垃圾值。

【注】:如果我们不初始化一个数组,而且这个数组在程序的后面又没有被赋值,那么这个数组中的元素的值都是垃圾值。如果只初始化了一部分值,那么后面的几个值都会被初始化为0。

四、给数组元素赋值

声明数组之后我们可以通过下标来给数组中的某个元素赋值。

我们通过一个简单的例子来介绍一下给数组中的元素赋值

#include <stdio.h>

int main()
{
	int a[5];   //声明有5个int类型的元素的数组

	int b = 2;

	//依次给这5个元素赋值
	for(int i = 0; i < 5; i++)
	{
		a[i] = i * b;  //将b 乘以i的值赋给a中的元素
	}

	//打印a中的元素
	for(int i = 0; i < 5; i++)
	{
		printf("%d ", a[i]);
	}

	printf("\n");

	return 0;
}

来看一下最后的结果


【注】:我们给数组赋值的时候不能再利用大括号给数组赋值了,利用大括号只能给数组初始化

五、数组的边界问题

我们在使用数组的时候一定要注意数组的边界问题。

我们首先定义一个含有十个int类型的元素的数组。

int num[10];

这个数组下标的起始下标是0,最后一个元素的下标是9。a[10]是无效的!!!

C语言程序不会编译的时候不会对数组的边界进行检查,所以我们自己写代码的时候一定要防止出现下标越界的问题。

一旦下标出现越界就会出现意想不到的问题。有时候就会导致程序终止运行。

猜你喜欢

转载自blog.csdn.net/y____xiang/article/details/80814090