关于二维数组与指针的小理解

#include <stdio.h>
int main(void)
{
    
    
    
    int num[4][2];
    num;
    num[0];
    return 0;
}

让我来探讨一下num与num[0]的区别,根据我的分析,这两个都是代表地址,而我根据num[4][2],来具象化理解一下

在这里插入图片描述
这应该是二维数组在空间中的储存模式。

num
num[0]
这两个是存在一点区别,虽然都是储存的第一个元素的地址也就是 num[0][0]的地址,但是两个代表的不太一样

num,num+1,num+2
都是代表两个int 类型大小的地址,也就是代表这一行
num[0],num[1],num[2], 则是代表这一行的首元素的地址,表示一个int 类型大小的地址
不过,&num[0]是和num,相等的。表示这一行,代表一个数组。

一个二维数组可以看成是两个数组,先访问行,再访问列。先进入行数组,再根据行数组中储存的地址进入列数组。列数组中存储的才是数字或元素。

num一个二级指针
先*num,代表解应用,进入这一行数组,再次解应用
num,提取这个数组首元素地址上储存的数字,或者看成
((num+0)+0),里面括号代表哪个数组的首元素,括号外则是第几个元素,和num[0][0],是一个意思。

这主要是探讨一下二维数组再内存中的存储模式。
如有错误,请大佬指点。
还有哦。
指针进阶-ONE

猜你喜欢

转载自blog.csdn.net/weixin_52199109/article/details/111415765