您的位置:首页 > 健康 > 美食 > 【时时三省】(C语言基础)指针进阶 例题7

【时时三省】(C语言基础)指针进阶 例题7

2024/10/6 0:37:52 来源:https://blog.csdn.net/2301_81226734/article/details/142266487  浏览:    关键词:【时时三省】(C语言基础)指针进阶 例题7

山不在高,有仙则名。水不在深,有龙则灵。                           ----CSDN 时时三省

二维数组

3be228a8258741368393090d8fd72677.jpg

 

 第一个a 因为它有12个元素 每个元素占4个字节 所以就打印48

第二个a[0][0] 表示是第一行第一个元素  所以它算的就是第一行第一个元素所占的大小 所以就打印4

第三个a[0]它就可以理解为 第一行的数组名 所以它就是计算的第一行的大小 所以它就是打印16

第四个a[0]+1   a[0]作为数组名并没有单独放在sizeof内部 也没有取地址 所以a[0]表示的是第一行第一个元素的地址 a[0]+1就是第一行第二个元素的地址

第五个*(a[0]+1)  这个是解引用的第一行第二个元素的地址 因为它是int类型 所以打印4个字节

第六个a+1 a代表首元素地址 对于二维数组来说 首元素就是代表第一行 +1就表示第二行的地址 所以他就打印4

第七个*(a+1) a+1代表第二行的地址 然后解引用 第二行有4个元素 每个元素4个字节 所以它就是打印16

第八个&a[0]+1 &a取出来的是整个数组的地址 &a[0]取出来的是第一行的地址  +1就表示的第二行的地址 所以就是打印4

第九个*(&a[0]+1) 这个表示第二行的地址 解引用以后计算的就是第二行的所有元素的大小 就是打印16

第十个*a a表示首元素地址 首元素就是第一行的地址 第一行的地址解引用以后就是打印16

第十一a[3] a[3]其实是第四行的数组名(如果有的话)所以其实不存在 也能通过类型计算大小的 所以它就打印16 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com