刚刚看《c++ primer plus》,里面讲到如果定义一个数组,int m[10];
则“m”和“&m”的值是一样的,但是,本质不同,数组名“m”就是数组m的第一个元素的地址,它指向数组m的第一个元素,但是“&m”指向的是整个数组,
这样说,如果给m+1,则m的值增加4(假设int占4个字节),等于数组的第二个元素的地址,但是“&m+1”增加的就是10*4个字节,移动到了数组最后一个元素的下一个字节,
也就是说,“&m”是一种“数组指针”,“&m”就是一个指向数组的指针,它指向的是整个数组。
再来介绍他俩的另一个区别,访问第一个元素时,对于数组名m很直接,用“*m”就可以访问到数组第一个元素,
但是对于“&m”,需要这样用:“**&m”,
乍一看可能就晕了,我刚刚想了半天,是不是这个样子,
“&m”是数组指针,那么“*&m”就是这个数组了,相当于这个数组本身,也就是这里的“*&m”和数组名是一个级别,那么要访问第一个元素,
肯定要用“**&m”来访问了!
我暂时就是这么理解的了,有什么不同的意见,就给我留言吧!讨论讨论,
我建了个群348538085
欢迎入群~!