【时时三省】(C语言基础)指针进阶 例题3
山不在高,有仙则名。水不在深,有龙则灵。
----CSDN 时时三省
例题:
这个arr里面是放了[a b c d e f \0]
第一个arr 这个sizeof是计算这个数组的大小 这个里面加上\0一共是7个元素 所以打印7
第二个arr+0 这个指数组名加0 数组名没有单独放在sizeof内部 所以它是首元素地址 首元素地址加0还是首元素地址 所以这个地方打印4或者8
第三个*arr 没有单独放在sizeof内部 也没有取地址 所以他表示首元素地址 解引用 就表示第一个元素 所以就是打印1
第四个arr[1] 这个[1]表示数组的第二个元素 它的大小就是一个字节 所以打印1
第五个&arr arr是个数组名 数组名进行了取地址 取出的是整个数组的元素 他是个地址 所以打印4或者8
第六个&arr+1 它原本&arr是整个数组 是7个元素 但是+1就跳过了整个数组 跳过了七个元素 这个时候它还是个地址 所以就打印4或者8
第七个&arr[0]+1 arr[0]是我们这个数组的第一个元素 &取出第一个元素的地址 第一个元素地址取出来+1 就是第二个元素的地址 第二个元素地址还是4或者8 就是打印4或者8