type arr_name[常量值]
type
指定的是数组中存放数据的类型,可以是: char、short、int、float
等,也可以自定义的类型。arr_name
指的是数组名的名字。[]
中的常量值是用来指定数组的大小的。
//存储某个班级的20个人的数学成绩
int math[20]
数组的初始化一般使用大括号,将数据放在大括号中。
//完全初始化
int arr[5] = {1, 2, 3, 4, 5};
//不完全初始化
int arr[5] = {1};//第一个元素初始化为1,剩余的元素默认初始化为0
int arr[10] //类型:int [10]
int arr[5] //类型:int [5]
[]
,这个操作符叫:下标引用操作符。arr[7]
,想要访问下标是3的元素,就可以使用arr[3]
,如下代码:
#include
int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("%d\n", arr[7]);//8
printf("%d\n", arr[3]);//4
return 0;
}
#include
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\n", arr[i]);
}
return 0;
}
#include
int main()
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
for(i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
#include
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("&arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}
//输出结果
//&arr[0] = 0133F8D0
//&arr[1] = 0133F8D4
//&arr[2] = 0133F8D8
//&arr[3] = 0133F8DC
//&arr[4] = 0133F8E0
//&arr[5] = 0133F8E4
//&arr[6] = 0133F8E8
//&arr[7] = 0133F8EC
//&arr[8] = 0133F8F0
//&arr[9] = 0133F8F4
%p
打印地址sizeof
后面如果是变量数组,则可省略括号,是类型则不可#include
int main()
{
int arr[10] = { 0 };
printf("%d\n", sizeof arr);
return 0;
}
// 输出的结果是40,计算的是数组所占内存空间的总大小,单位是字节。
#include
int main()
{
int arr[10] = {0};
printf("%d\n", sizeof arr[0]); //计算一个元素的大小,单位是字节
return 0;
}
#include
int main()
{
int arr[10] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]); //计算的是数组的元素个数
printf("%d\n", sz);
return 0;
}
//结果是10,表示数组有10个元素
type arr_name[常量值1][常量值2];
int arr[3][5]
int
表示数组的每个元素是整型类型arr
是数组名,可以根据自己的需要指定名字int arr1[3][5] = {1, 2};
int arr2[3][5] = {0};
int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
int arr4[3][5] = {{1,2},{3,4},{5,6}};
int arr5[][5] = {1,2,3};
int arr6[][5] = {1,2,3,4,5,6,7};
int arr7[][5] = {{1,2}, {3,4}, {5,6}};
C语言规定,二维数组的行是从0开始的,列也是从0开始的:
int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
#include
int main()
{
int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
printf("%d\n", arr[2][4]);
return 0;
}//输出7
#include
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;
}
#include
int main()
{
int arr[3][5] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
{
printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
}
}
return 0;
}
//&arr[0][0] = 00CFF860
//&arr[0][1] = 00CFF864
//&arr[0][2] = 00CFF868
//&arr[0][3] = 00CFF86C
//&arr[0][4] = 00CFF870
//&arr[1][0] = 00CFF874
//&arr[1][0] = 00CFF878
//&arr[1][1] = 00CFF87C
//&arr[1][2] = 00CFF880
//&arr[1][3] = 00CFF884
//&arr[1][4] = 00CFF888
//&arr[2][1] = 00CFF88C
//&arr[2][2] = 00CFF890
//&arr[2][3] = 00CFF894
//&arr[2][4] = 00CFF898
arr[0][4]
和 arr[1][4]
)之间也是差4个字节,所以二维数组中的每个元素都是连续存放的。int n = a + b;
int arr[n];
arr
是变长数组,长度取决于变量的值,只有运行时才能知道 n
是多少。