数组的写法格式有很多种
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;
}
输出: