数组
一、认识数组
数组是由数据类型相同的一系列元素组成,在使用数组时,需要明确告知编译器数组的类型和数组的个数。
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的数组