数组的写法格式有很多种
int arr1[6] = { 1,2,3,4,5,6 };
int arr[] = { 1,2,3,4,5,6 };
int arr[10] = { 1,2,3,4,5 };
int arr[10]; arr[0] = 1;
这些都有差别
代码:
int main()
{
//int arr1[6] = { 1,2,3,4,5,6 };
//int arr[] = { 1,2,3,4,5,6 };
//int arr[10] = { 1,2,3,4,5 };
int arr[10];
arr[0] = 1;
for (int i = 0; i <sizeof(arr)/sizeof(arr[0]); i++)
{
printf("%d\n",arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}
输出:
结论:
在数组中,如果给定了数组元素的数量,而实际值的数量小于所定的数量,那么缺少的位置将被填充为0;而如果实际值的数量超过了所定的数量,多余的值将被舍弃。
若仅提供数量却未给出具体数值,各下标对应的值将显得混乱;而一旦赋予该下标相应的数值,即可得到精确而准确的数值。
下面我们试试通过键盘输入,存放数据
注意:
- 数组元素必须是常量/常量表达式
- 数组必须预先知道大小
- 我们之后学的动态数组,可以理解成:开辟堆空间
代码:
int main()
{
//int i=10
//int arr[i];错误的❌
//数组元素必须是常量/常量表达式
//数组必须预先知道大小 之后学的,可以理解成:动态数组-->开辟堆空间
int arr[10];
for (int i = 0; i < 10; i++)
{
scanf("%d",&arr[i]);
}
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
system("pause");
return EXIT_SUCCESS;
}
输出:
数组越界:
代码:
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 20; i++)
{
//数组下标越界
printf("%d\n",arr[i]);//❌
}
system("pause");
return EXIT_SUCCESS;
}
输出: