#include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5} ;
//a是数组的名字,里面的数字是元素个数,并且里面的元素分别用a[0],a[1],a[2],a[3],a[4]称呼
int i;
for (i=0;i<5;++i)
printf("%d\n",a[i]);
return 0;
}
1.为什么需要数组?
为了解决大量同类型数据的存储和使用,以及模拟现实世界。
2.数组分类
1>.一维数组
怎样定义一维数组:需为N个变量连续分配存储空间,所有变量数据类型必须相同,所有变量所占字节大小必须相等。
有关一维数组的操作:初始化,赋值,排序,求最大最小值,倒置,查找
完全初始化:
int a[5]={1,2,3,4,5}
未完全初始化:
int a[5]={1,2,3}未被初始化的值自动为零
不初始化
int a[5];里面的所有元素都是垃圾值。
清零:
int [5]={0};
错误写法:
int a[5];
a[5]={1,2,3,4,5}//只有在定义数组的时候才可以整体赋值,其他情况下整体赋值全错。 因为没有a[5]=100也不行因为没有a[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];
数组倒置代码
#include <stdio.h>
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
int i,j;
int t;
i=0;
j=7;
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]);
return 0;
}
2.>二位数组
int a[3][4];总共是12个元素,前行后列,可以理解成平面坐标,都从0开始数,即 a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] ……
……
int a[m][n]该二维数组右下角位置的元素只能是a[m-1][n-1]
初始化
int a[3][4]={//里面放十二个值}
或者 int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
输出二维数组内容:
#include <stdio.h>
int main() {
int a[3][4]= {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
printf("%-5d",a[i][j]);//-5d里面,-是左对齐,5是中间间隔位置
printf("\n");
}
return 0;
}
多维数组:
是否存在多维数组:不存在。因为内存是线性一维的,n维数组可以当作每个元素是N-1维数组的一维数组。
可以参考矩阵的分块。