1.定义:数组:一行代码可一次性命令一群相同类型的变量
//麻烦的方法
int main()
{ int a=1;
int b=3;
int c=2;
int d=4;
int e=5;
return 0;
}
如果用数组:
格式:数据类型 数组名称(名称自己定)[数组中所含的变量个数]={列举};
[ ]内一定不能是变量
int n=10; int arr[n]={0};这样写是错误的
但C99支持(变长数组,用变量指定大小),但是该数组不能初始化
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//用数组
int arr[5] = { 1,3,2,4,5 };
//1对应arr[0],即数组中第一个变量
// 3-->arr[1]
// 2-->arr[2]
// 4-->arr[3]
// 5-->arr[4]
// 1,3,2,4,5从左向右依次分配
// 注意arr[5]并没有存储,arr[5]的5代表数组中有5个变量
printf("%d\n", arr[3]);
}
结果是3
所以数组存储数据使用起来比一个个定义变量要方便
练习
1.计算数组中元素的个数
int a[10]={0};
printf("%d",sizeof(a)/sizeof(a[0]));
结果是10
2.打印数组的所有数据
(while在第11篇有讲)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//用数组
int arr[5] = { 1,3,2,4,5 };
int i = 0;
while (i < 5)
{
printf("%d\n", arr[i]);
i++;
}
}
2.数组的初始化
01完全初始化:为所有数组初始化数据
int arr[5] = { 1,3,2,4,5 }; 5个变量赋值5个数字
02不完全初始化
例:int arr[5] = {1,2}; arr[0] ,arr[1]分别是1和2,其余变量默认是0
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//用数组
int arr[5] = {1,2};
int i = 0;
while (i < 5)
{
printf("%d\n", arr[i]);
i++;
}
}
例: char ch[5]={'a','b'};
ch[1]和ch[2]分别存储a和b,其余变量存储\0
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//用数组
char ch[5] = { 'a','b' };
int i = 0;
while (i < 5)
{
printf("%c\n", ch[i]);
i++;
}
}
有关字符类数组的细节说明:
abc123不是一共6个字符吗,为什么数组会溢出?
把arr[6]改大点(如arr[7])后按F10调试
打开监视窗口
字符串的结尾隐藏\0,会占用长度
如果想避免出错,改为arr[]="abc123"即可,[]什么都不填,程序会根据赋值号右边的内容自动计算