一、数组的定义
数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的。数组是有序数据的结合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下表来唯一地确定数组中的元素。例如一个班有10个学生,可以用S[1],S[2],S[3].........等代表10个学生的成绩,S是数组名,下标代表学生序号。
1.定义
类型说明符 数组名[常量表达式];
int s[10];
2. 使用
简单初始化:int s[5] = {19, 19, 20, 21, 25};
元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始
数组元素的访问:a[i]
3.初始化
1>初始化方式
int a[3] = {10, 9, 6};
int a[3] = {10,9};
int a[] = {11, 7, 6};
int a[4] = {[1]=11,[0] = 7};
2>常见错误
int a[];//没有明确数组大小
int[4] a;//写法错误
int a[b];//必须是明确的数组大小
a = {10, 11};//没有数据类型
a[4] = {10,9,8,5};
二、数组的实例
#include <stdio.h>
int main()
{
// 使用注意
// 都是正确写法
//int ages[5] = {10 , 11, 12, 67, 56};
//int ages[5] = {10, 11};
//int ages[5] = {[3] = 10, [4] = 11};
//int ages[] = {10, 11, 14};
// 错误写法
// int ages[];
// 错误写法
/* 只能在定义数组的同时进行初始化
int ages[5];
ages = {10, 11, 12, 14};
*/
// 正确写法
// int ages['A'-50] = {10, 11, 12, 14, 16};
//int size = sizeof(ages);
//printf("%d\n", size);
// 正确写法
/*
int count = 5;
int ages[count];
ages[0] = 10;
ages[1] = 11;
ages[2] = 18;
*/
//printf();
// 错误写法
// 如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写
//int ages[count] = {10, 11, 12};
int ages[] = {10, 11, 12, 78};
// 计算数组元素的个数
int count = sizeof(ages)/sizeof(int);
for (int i = 0; i<count; i++)
{
printf("ages[%d]=%d\n", i, ages[i]);
}
return 0;
}
// 数组的基本使用
void arrayUse()
{
// 数组的定义格式: 类型 数组名[元素个数];
int ages[5] = {19, 29, 28, 27, 26};
// 19 19 28 27 26]
ages[1] = 29;
/*
ages[0] = 19;
ages[1] = 19;
ages[2] = 28;
ages[3] = 27;
ages[4] = 26;
*/
/*
遍历:按顺序查看数组的每一个元素
*/
for (int i = 0; i<5; i++)
{
printf("ages[%d]=%d\n", i, ages[i]);
}
}
三、数组与函数
数组作为函数参数,可以省略元素个数。 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
#include <stdio.h>
void change(int array[])//改变数组元素值得函数
{
//printf("array==%p\n", array);
array[0] = 100;
}
int main()
{
int ages[6] = {10, 11, 10, 11, 10, 11};
printf("ages==%p\n", ages);//输出sge数组首元素地址
change(ages);
printf("%d\n", ages[0]);//输出改变后元素的值
return 0;
}
四、二维数组
1.定义
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。一个数组能表示一个班人的年龄,如果想表示很多班呢?什么是二维数组?int ages[3][10]; 三个班,每个班10个人,相当于3行10列,相当于装着3个一维数组。二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素。
二维数组的表现形式:
数组名[下标][下标]
2.初始化
1>分行给二维数组赋初值
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2>可以将所有数据写在一个花括号内,按数组的顺序对各元素赋初值
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
3>可以对部分元素赋初值
int a[3][4] ={{1},{5},{9}};
int a[3][4]={{1},{0,6},{0,0,11}};
五、二 维数组实例
/*
将一个二维数组行和列的元素互换,存到另一个二维数组中
*/
#include <stdio.h>
int main()
{
int a[2][3] = {{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i <= 1;i++)
{
for(j = 0;j<= 2; j++)
{
printf("%5d",a[i][j]);//将二维数组输出来,每个字符间空5个
b[j][i] = a[i][j];//将二维数组行和列的元素互换
}
printf("\n");
}
printf("array b:\n");
for(i = 0;i <= 2;i++)
{
for(j=0;j <= 1;j++)
{
printf("%5d",b[i][j]);//将二维数组输出来,每个字符间空5个
}
printf("\n");
}
return 0;
}