1、为什么需要数组
为了解决保存大量同类型的数据 存储和使用;为了模拟现实世界
2、数组的分类
一维数组
怎样定义一维数组
为n个变量连续分配存储空间
所有的变量的数据类型必须相同
所有变量所占的字节大小必须相等
一维数组名不代表数组中所有的元素
一维数组名代表数组中第一个元素的地址
有关数组的操作:
初始化
完全初始化
int[5] = {1,2,3,4,5}
不完全初始化 未被初始化的元素自动为零
int[5] = {1,2,3}
不初始化,所有的元素都是垃圾值
int a[5]
清零: int a[5] = {0}
错误写法:int a[5];
a[5] = {1,2,3,4,5}
只有在定义数组的同时才整体赋值,其他情况下整体赋值都是错误的
int a[5] = {1,2,3,4,5}
int b[5]
如果把a数组中的值全部复制给b数组
错误写法:b = a;
正确写法: for(i = 0;i<5;++i)
b[i] = a[i];
赋值
排序
求最大/小值
倒置查找
二维数组
int a[3][4]总共十二个元素 当做三行四列对待 这十二个元素的名字依次是
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
初始化
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
}
输出二维数组内容
不存在多维数组:
因为内存是线性一维的
n维数组可以当做每个元素是n-1维的一维数组
如:
int a[3][4] 该数组是含有三个元素的一维数组 只不过每个元素都可以在分成四个小元素
int a[3][4][5] 该数组是含有三个元素的一维数组 只不过每个元素都是4行5列的二维数组
//数组的使用
#include<stdio.h>
void main()
{
int a[5] = {1,2,3,4,5}; //这五个元素分别用a[0] a[1] a[2] a[3] a[4]表示
int i;
for(i = 0;i<5;++i)
printf("%d\n",a[i]);
}
include<stdio.h>
void main()
{
int a[5];
}
//把一个数组元素全部倒过来
#include<stdio.h>
void main()
{
int a[8] = {1,2,3,4,5,6,7,8};
int i = 0;
int j = 7;
int t;
while(i<j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
i++;
--j;
}
for(i =0;i < 8;++i )
printf("%d\n",a[i]);
}
//二维数组的操作
#include<stdio.h>
void main()
{
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i ,j;
//输出数组内容
for(i = 0;i<3;++i)
{
for(j = 0;j<4;++j)
printf("%-5d ",a[i][j]); //-5表示左对齐五个符号
printf("\n");
}
}