【千里之行始于足下|2021-11-09 指针和数组经典笔试题(一)——一维数组】
文章图片
千里之行始于足下
题目:计算出程序的运行结果
文章图片
附: 1.首先跟大家介绍下sizeof这个关键字的作用,它实际上是一种操作符,用来求变量所占空间的大小或求类型创建的变量所占空间的大小,单位是字节。
2.通常数组名都是代表数组首元素的地址,但是有两个例外,一个是sizeof(数组名),意思是计算整个数组的大小;另一个是&数组名,取出整个数组的地址。
3.在32位平台下,地址(指针)所占的字节大小是4;在64位平台下,地址(指针)所占的字节大小是8。
思路: 根据上述所附的知识点,我们可以清楚地知道第一个打印出来的是16,因为一个整形是4个字节,数组里面有4个元素,所以整个数组所占的字节空间就是16,实际上我们第7个打印出来的也是16,因为*&a的意思就是取出整个数组的地址,然后再解引用。(&a本质是一个数组指针即是int (*)[4],解引用出来就是拿到4个整形类型的元素)
*a=*(a+0)=a[0],也就是拿到数组首元素,数组首元素是1,1是整形,整形就是4个字节,所以第3和第5个打印出来都是4。
其余打印在32位平台下是4,在64位平台下都是8,时刻记住只要你是地址(指针)那么你所占的内存空间的字节大小就是4或8,指针的类型只是为了在内存中你能访问多少个字节,eg:整形指针能访问4个字节。
答案:这是32位平台下打印出来的,64位平台下打印出来会有所不同
文章图片
文章图片
备注:楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢大家一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报大家的。
文章图片
推荐阅读
- 【C语言进阶】进阶指针
- #yyds干货盘点# C语言数组与指针常考笔试题(原题+解析+原码)
- C语言从0到1|【C语言】指针进阶(字符指针&&数组指针&&函数指针)
- C语言算法
- c语言实现简单版扫雷
- C语言|程序员的你,有哪些炫技的代码写法()
- C语言|ASCII编码,将英文存储到计算机
- C++|如何系统地学习 C++ 语言()
- C++|十款真正的编程游戏软件