前言:本人为C语言初学者,学识尚浅,研究程度存在很大的局限性,眼界很窄。以下所有观点仅代表个人见解和思路,各位游刃有余的前辈可以给予批评和指正!各位与鄙人同路的学子可相互探讨、发表看法,交换观点!
数组释意(个人理解):一组相同数据类型的数在内存中的连续储存
数组分为:一维数组、二维数组、多维数组
可能在我们心里,他们分别是这样呈现的:
可是在内存中,他们如何排列呢?故我们做一个小测试,见如下代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int arr1[6] = { 1, 2, 3, 4, 5, 6 }; //一维数组
int arr2[3][6] = { {1,2,3,4,5,6}, //二维数组
{1,2,3,4,5,6},
{1,2,3,4,5,6} };
int arr3[2][2][2] = { {
{1,2},{3,4}}, {
{5,6},{7,8}} }; //三维数组
for (int i = 0; i < 6; i++) //一维数组的地址打印
{
printf("&arr1[%d] = %p\n", i, &arr1[i]);
}
putchar('\n');
for (int i = 0; i < 3; i++) //二维数组的地址打印
{
for (int j = 0; j < 6; j++)
{
printf("&arr2[%d][%d] = %p\n", i, j, &arr2[i][j]);
}
}
putchar('\n');
for (int i = 0; i < 2; i++) //三维数组的地址打印
{
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 2; k++)
{
printf("&arr3[%d][%d][%d] = %p\n", i, j, k, &arr3[i][j][k]);
}
}
}
return 0;
}
(我总觉得三维数组的初始化写的有点问题)
我们得到了如下结果: