2.二维数组的创建和初始化
2.1二维1数组的创建
//数组创建
int arr[3][4];
char arr[3][5];
double arr[2][4];
2.2二维数组的初始化
//数组的初始化
int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{4,5}};
int arr[ ][4] = {{2,3},{4,5}};//二维数组如果有初始化,行可以省略,列不能省略。
2.3二维数组的使用
二维数组的使用也是通过下标的方式。
看代码:
#include<stdio.h>
int main()
{
int arr[3][4] = { 0 };
int i = 0;
for (i = 0;i < 3;i++)
{
int j = 0;
for (j = 0;j < 4;j++)
{
arr[i][j] = i * 4 + j;
}
}
for (i = 0;i < 3;i++)
{
int j = 0;
for (j = 0;j < 4;j++)
{
printf("%d ", arr[i][j]);
}
}
return 0;
}
2.4二维数组在内存中的存储
像一维数组一样,这里我们尝试打印二维数组的每个元素。
#include<stdio.h>
int main()
{
int arr[3][4];
int i = 0;
for (i = 0;i < 3;i++)
{
int j = 0;
for (j = 0;j < 4;j++)
{
printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
}
}
return 0;
}
3.数组越界
数组的下标是有范围限制的。
数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1.
所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。
c语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,所以程序员写代码时,最好自己做越界的检查。
#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\n", arr[i]);//当i等于10的时候,越界访问了
}
return 0;
}
二维数组的行和列也可能存在越界。
标签:arr,17,int,越界,++,二维,数组 From: https://blog.csdn.net/a12sj_/article/details/144526764