二维数组的创建
int main()
{
int arr[3][4];//相当于三行四列
return 0;
}
每个元素类型是int 之所以叫二维是因为他有行和列区分
二维数组的初始化
初始化 就是创建的同时给它赋值
int main()
{
int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
return 0;
}
不完全初始化 后面补0 整型数组是这样的。如果是字符数组补\0
int main()
{
int arr[3][4] = { 1,2,3,4,5,6,7 };
return 0;
}
如果想把某个值放在某一行 怎么做如下
int main()
{
/*int arr[3][4] = { 1,2,3,4,5,6,7 };*/
int arr[3][4] = { {1,2},{3,4},{5,6} };
return 0;
}
关于数组,行可以省略 但是列不能省略,后面的相当于一行有几个元素
**二维数组也是通过下标来使用 行和列都从0开始**
int main()
{
/*int arr[3][4] = { 1,2,3,4,5,6,7 };*/
/*int arr[3][4] = { {1,2},{3,4},{5,6} };*/
int arr[][4] = { {1,2},{3,4},{5,6} };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
return 0;
}
二维数组在内存中的存储(连续存放)
int main()
{
/*int arr[3][4] = { 1,2,3,4,5,6,7 };*/
/*int arr[3][4] = { {1,2},{3,4},{5,6} };*/
int arr[][4] = { {1,2},{3,4},{5,6} };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("arr[%d][%d]=%p\n", i, j & arr[i][j]);
}
printf("\n");
}
return 0;
}
由此得出二维数组中也是连续存放 一行内部连续 跨行业是连续的
知道这些有什么用途 举例两个用途
int main()
{
int arr[][4] = { {1,2},{3,4},{5,6} };
int i = 0;
int*p = &arr[0][0];
for (i = 0; i < 12; i++)
{
printf("%d ", * p);
p++;
}
return 0;
}
有第一个推出后面的