C语言——数组

一、认识数组

数组是由数据类型相同的一系列元素组成,在使用数组时,需要明确告知编译器数组的类型和数组的个数。

type name[const]
type表示类型
name表示名字
const表示常量或者常量表达式

int main(void)
{
	int arr[10];
	float num[36];
	char code[100];
}

二、一维数组的定义和引用

1.一维数组的创建

格式:
类型 数组名[常量表达式]={ };

数组的取名规则和变量相同,遵守标识符命名规则。

	int day[30];//定义30天

数组的类型就是数组中各个元素的类型,一个数组的所以元素类型相同。

	int i[10];//10个int类型的i
	char j[5];//5个char类型的j

所以的数组名字都相同,区别在于下标。下标从0开始,按照顺序依次排放。

	int num[10];
	//num[0],num[1],num[2],num[3],num[4]
	//num[5],num[6],num[7],num[8],num[9]

num[0]表示数组中第一个元素。

2.一维数组的初始化

数组的初始化,即在定义数组时给数组添加合理的初始值。

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

如果在定义一个数组时,不确定元素的个数,就必须初始化,编译器会根据你的初始化的值来确定元素个数,并分配内存。

	int num[]={0,1,2,3,4};//系统默认5个元素

3.一维数组的引用

在定义完一维数组后,不能引用整个数组,只能逐个引用。


//打印数组	
	int num[] = {1,2,3,4,5};
	//确定数组的长度
	int sz = sizeof(num)/sizeof(num[1]);
	//循环
	int i = 0;
	for(i = 0; i<sz; i++)
	{
	//打印数组里的元素
		printf("%d ",num[i]);
	}
	return 0;

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

一维数组在内存中时连续的,由高到低的。并且数组中的每一个连续元素的地址相差一个类型的存储内存。

	//打印数组的地址
	int num[] = {1,2,3,4,5};
	//确定数组的长度
	int sz = sizeof(num)/sizeof(num[1]);
	//循环
	int i = 0;
	for(i = 0; i<sz; i++)
	{
	//打印数组里的元素
		printf("&num[i]=%p\n", i, &num[i]);
	}
	return 0;

三、二维数组的定义和引用

1.二维数组的定义

格式
类型 数组名[常量表达式1][常量表达式2]={};

	int num[2][3];
	//表示2行3列

数组的元素都是内置类型,如果我们把一位数组作为数组的元素就叫二维数组,将二维数组作为数组的元素就叫三位数组,二维数组以上的数组统称为多维数组。

2.二维数组的初始化

二维数组在初始化时有三种情况。
第一种:不完全初始化

	int num[2][3]={0,1};
	//其他的值默认为0

第二种:完全初始化

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

第三种:按照行和列初始化

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

在省略二维数组的常量或者常量表达式的时候,只能省略行的,不能省略列的。

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

3.二维数组的引用

格式:
数组名[行下标][列下标]

二维数组的下标同一维数组的下标相同,可以时常量或者常量表达式。并且行下标和列下标都是从0开始的

例如:num[2][3]的每个元素
num[0][0] , num[0][1] , num[0][2]
num[1][0] , num[1][1] , num[1][2]

二维数组的打印

#include<stdio.h>
int main(void)
{	
	int num[3[3];
	//初始化赋值
	int i = 0;
	int j = 0;
	for(i = 0; i<3; i++)
	{
		for(j = 0; j<3; j++)
		{
			num[i][j]=1+i+j;
		}
	}
	for(i = 0; i<3; i++)
	{
		for(j = 0; j<3; j++)
		{
			printf("%d",num[i][j]);
		}
	}
	return 0;
}

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

二维数组在内存中的存储也是连续的。

#include<stdio.h>
int main(void)
{	int num[3][3];
	for(i = 0; i<3; i++)
	{
		for(j = 0; j<3; j++)
		{
			printf("num[%d][%d]\n",i,j,num[i][j]);
		}
	}
	return 0;
}

四、数组边界

在使用数组时,要小心数组下标超出边界,必须确保下标是有效的值。

	int num[20];
	//我们只能使用下标为0-19的数组
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值