数组的定义
数组是由同一类型元素组成的集合。但元素个数不为0,且类型相同。
一维数组
type name[常量值],type为数组的类型,name为数组的名字,常量值表示数组中元素的个数,常量值不能为零。
初始化
数组的初始化用{}来表示,例如 int gtt[5]={1,2,3,4,5}。如果初始化的元素个数小于常量值,计算机会用0代替。如果初始化的元素个数大于常量值,计算机会乱码,因为它识别不了。但常量值可以省略,计算机会根据元素的个数来推断常量值大小。
- 字符初始化有所不同
字符可以用"“,arr2与arr1不同是因为字符串默认有”\0",这为结束符的标志。arr2里面的元素是单个字符,计算机会推测还没有结束,便一直打印下去。如果加上"\0"便会与arr1相同。 - 用sizeof与strlen
sizeof计算操作符内存的大小,单位字节。不关注内存中的数据。
计算数组所占内存空间大小为类型大小乘上常量值。
strlen是库函数,有头文件string.h。求字符串长度,统计"\0"前的字符,如果没有"\0"则可能会越界。
使用
[]为下标引用操作符,可用来访问数组。
下标从0开始,可用循环来访问数组的所有下标,
例如:
#include <stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
- 数组在内存中是连续存放的。
二维数组
- 二维数组以上称为多维数组
type name[常量值1][常量值2],type为类型,name为数组的名字。常量值1为数组的行,常量值2为数组的列。元素个数为常量值1*常量值2。
初始化
与一维数组几乎一致,但数组的列不可以省略。
使用
下标操作符也为[],但列和行都从0开始,例如
- 输入与输出
可以用循环来插入数组的元素,也可以用循环来访问数组元素。访问时要让行与列都初始化。
例如
#include <stdio.h>
int main()
{
int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
int i = 0;//遍历⾏
//输⼊
for(i = 0; i < 3; i++) //产⽣⾏号
{
int j = 0;
for(j = 0; j < 5; j++) //产⽣列号
{
scanf(“%d”, &arr[i][j]); //输⼊数据
}
}
//输出
for(i = 0; i < 3; i++) //产⽣⾏号
{
int j = 0;
for(j = 0; j < 5; j++) //产⽣列号
{
printf(“%d “, arr[i][j]); //输出数据
}
printf(”\n”);
}
return 0;
} - 二维数组中每个元素都是连续的。
变长数组
变长数组不能初始化,只有在运行的时候才知道长度,帮助程序员不用估计数组长度,可以改变数组的常量。
例如:
int a;
scanf(“%a”,&a);
int arr[a];
- C99才承认这个写法
- VS2026想支持这个写法要安装clang
- gcc可以