二维数组与指针的相爱相杀
程序员文章站
2022-07-14 16:37:25
...
数组(名) “等价于” 数组首元素地址
int R[3] = {1, 2, 3};
for (int i = 0; i < 3; i++)
printf("%d\n", R[i]);
// 这是我们平常所用的数组遍历方法
// 但同样我们可以这样遍历数组
int *p = R;
for(int i = 0;i<3;i++)
{
printf("%d\n",*p);
printf("%d\n",p[i]); // 同上面是同样的效果
p++;
}
************************************************************
同样 二维数组 也可以采用类似的方法遍历
int R[3][3];
int (*p)[3] = R; //p 是数组指针
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("%d\t",p[i][j]);
printf("\n");
}
二维数组是数组的嵌套
二维数组可以看做一个外层数组包含了多个内层数组
外层数组的元素是数组
内层数组的元素是基本元素
根据上面 数组(名)等价于首元素的地址 可知
一维数组 可以使用 int *p; 来代替
二维数组 可以使用 int (*p)[n] 来代替
数组指针 与 指针数组
在C语言中很容易混淆两个概念
int *p[n]; //指针数组 本质是数组
int (*p)[n]; //数组指针 本质是指针
思考 指针数组可以使用什么来代替?
上一篇: 解决联想R7000安装Ubuntu后快捷键无法调节亮度问题
下一篇: 跨平台应用——Electron