各位,今儿给大家带来一个不错的C语言试题,此题对你在C中的数组理解与掌握是个不错的检查,话不多说,请看题:

问题是会输出什么?

我们就开门见山了,通过阅读代码发现本体主要考察以下四方面:数组的指针法访问;数组名和数组名取地址的应用与区别;sizeof关于数组名和其他变量的用法;强制类型转换。

解析之前我们有两点需要明确:

1、在C中,几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址。它的类型取决于数组元素的类型:如果它们是int类型,那么数组名的类型就是“指向int的常量指针“。——《C和指针》

2、在以下两中场合下,数组名并不是用指针常量来表示,就是当数组名作为sizeof操作符和单目操作符&的操作数时。sizeof返回整个数组的长度,而不是指向数组的指针的长度。取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量的指针。所以&a后返回的指针便是指向数组的指针,跟a(一个指向a[0]的指针)在指针的类型上是有区别的。——《C和指针》。

本题解析:

1、&a表示的是整个数组的地址,+1后表示移动跟这个数组大小一样的空间,int*进行了强制类型转换为一个int类型元素的地址,因此p指向了数组a后面的一个int类型元素。

2、*(p-1)表示p向后移动一个int类型的字节数再解引用,因此为数组a的最后一个元素5;*p-1表示先解引用p指向的地址出的值在减一,此时该值是未定义的。

3、sizeof(数组名)得到的是整个数组的字节数,即5*4=20;sizeof(数组地址)为地址多占字节数,64位下为8。

4、本题答案为5,未定义,20,8。

sizeof 数组_简单的一维数组竟然有这么多坑?相关推荐

  1. 怎么根据输入的n来输入n组数组_【题解一维数组】1106:年龄与疾病

    1106:年龄与疾病时间限制: 1000 ms    内存限制: 65536 KB [题目描述] 某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18.19-3 ...

  2. C++阶段01笔记05【数组(概述、一维数组、二维数组)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 5 数组 5.1 概述 5.2 一维数组 5.2.1 一维数组定义方式 --示例 5.2.2 一维数组数组名 --示例 --练习 ...

  3. 数组的定义,一维数组,二维数组与变长数组

    目录 1.数组 2.一维数组 3.二维数组 5.数组的大小 6.遍历数组 7.数组常见错误 1.数组 简介:是一种容器 <类型> 变量名称[元素数量] ( c99之前元素数量必须是整数) ...

  4. java正确定义一维数组_java一维数组定义,创建一维数组详解

    前面给大家介绍了一下什么是java数组,下面要接着给大家介绍的就是java一维数组定的定义以及创建一维数组方面的知识. 数组当中的每个元素都只带有一个下标的时候,这样的数组就是一维数组,一维数组实质上 ...

  5. c语言程序设计一维数组教案,C语言一维数组教案.doc

    C语言一维数组教案.doc 学学 科科计算机科学与技术 课课 程程C 语言程序设计 课课 题题一维数组 课课 时时2 教学目标教学目标1.掌握一维数组的定义和引用 2.掌握一维数组的初始化方法 3.了 ...

  6. java二维数组遍历后转为一维数组_java数组(一)

    数组的定义 数组是相同类型数据的有序集合. 简单理解就是:数组是由若干个相同类型的数据,按照一定的顺序组合而成的.数组中的每一个数据我们可以称为元素,每个元素可以通过索引(下标)来访问(获取). 数组 ...

  7. LeetCode_数组_简单题

    目录 26.删除排序数组中的重复项 27.移除元素 53.最大子序和 66.加一 88.合并两个有序数组 118.杨辉三角形 119.杨辉三角形II 717.1比特与2比特字符 989.数组形式的整数 ...

  8. 【C语言】sizeof(数组名),包括 一维数组、字符数组、二维数组

    目录 1. 数组名.sizeof(数组名).&数组名 2. 一维数组的sizeof() 2.1 整型数组的sizeof() 2.2 字符数组的sizeof() 2.3 字符串赋值给字符数组的s ...

  9. java二维数组遍历后转为一维数组_[基础篇]-基础知识整理-05-数组基本概念

    数组 数组是大部分编程语言所支持的数据结构,Java也支持数组,Java的数组是一种引用类型的变量,Java程序通过数组引用变量来操作数组,包括获取数组的长度,访问数组的值等. 数组的基本概念 数组是 ...

最新文章

  1. php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
  2. 软件测试:黑盒白盒与动态静态之间有必然联系吗
  3. 【ZooKeeper Notes 14】数据模型
  4. 开发者需要知道的有关软件架构的五件事
  5. Visual Studio 2012 调试程序加载缓慢,提示正在下载符号
  6. BZOJ1001 狼抓兔子
  7. 安卓设置菊花动画_Android仿ios加载loading菊花图效果
  8. Eclipse 搭建Android开发环境(整理)
  9. 使用SWig出现调用异常的情况
  10. cetk使用方法--nand flash测试
  11. [bzoj4003][JLOI2015]城池攻占_左偏树
  12. 烂泥:NFS做存储与KVM集成
  13. openStack 手动部署文档
  14. 智慧解析第20集:破解迷魂术
  15. 跳级全奖进哈佛,连马云都忌惮三分,赚18个亿后隐退美国,如今的他在干什么?...
  16. 基于java物流管理信息系统
  17. 为什么快捷指令无法将媒体转换为文本_快捷指令自动化可以做什么,不能做什么?...
  18. LSTM多输入时间序列预测之股价预测
  19. matlab 母小波,小波变换的定义.ppt
  20. 基于android的资源文件管理器

热门文章

  1. 使用action framework 实现order change时自动发送邮件
  2. User status for Service Order
  3. 如何使用参数调用SAP UI5的bingAggregation
  4. Fiori launchpad里tile的个数是如何从后台取回来的
  5. nodejs因buildpack指定不当部署到CloudFoundry后出的一个错误
  6. SAP SuccessFactor学习中心的通知机制
  7. SAP Cloud for Customer创建Account也会生成对应的Business partner实例
  8. 12-factor应用和微服务架构应用的区别
  9. python默认参数举例_Python之在函数中使用列表作为默认参数
  10. uni-app中使用lodash_Vue 使用中的小技巧