前言
工作摸鱼 闲来无事
一、直接看题
二、直接上代码
所以,这个题目答案是5.
我来盘给你:int a[5] = {1,2,3,4,5};
1·数组名本身就是表示数组首元素地址
2·对数组名取地址:表示的是整个数组的地址,并且为int (*p)[5] 类型。
但是哈!!不管是数组名的含义还是对数组名取地址的含义,他们都是表示一个地址,而且这个地址两者一致。不同的是:偏移量的不同。怎么解释?a+1表示的是a[1]的地址,偏移量只有一个数组元素。但是&a+1表示下一个数组的地址(也就是a[4]这个最后一个元素后面的那个地址),因为偏移量是一个数组。
为什么会是5?应该是 这个数组本来就是int类型的。你看那个地址嘛,就是相差4,刚好一个字节,所以后面偏回来应该是以数组类型决定的,所以不管是数组是char还是int还是啥,反正就是偏移一个数组元素的大小。
我其实还是有点想不清楚*(&a+1)的含义。
于是根据看下图:
所以:数组指针内层解引用表示数组的地址,第二层解引用表示数组首元素的数据。
那和二维指针有什么关系?
我有空了再去验证。(还会涉及到二维数组,数组指针)
总结
:数组指针内层解引用表示数组的地址,第二层解引用表示数组首元素的数据。