sizeof 数组_简单的一维数组竟然有这么多坑?
各位,今儿给大家带来一个不错的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 数组_简单的一维数组竟然有这么多坑?相关推荐
- 怎么根据输入的n来输入n组数组_【题解一维数组】1106:年龄与疾病
1106:年龄与疾病时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18.19-3 ...
- C++阶段01笔记05【数组(概述、一维数组、二维数组)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 5 数组 5.1 概述 5.2 一维数组 5.2.1 一维数组定义方式 --示例 5.2.2 一维数组数组名 --示例 --练习 ...
- 数组的定义,一维数组,二维数组与变长数组
目录 1.数组 2.一维数组 3.二维数组 5.数组的大小 6.遍历数组 7.数组常见错误 1.数组 简介:是一种容器 <类型> 变量名称[元素数量] ( c99之前元素数量必须是整数) ...
- java正确定义一维数组_java一维数组定义,创建一维数组详解
前面给大家介绍了一下什么是java数组,下面要接着给大家介绍的就是java一维数组定的定义以及创建一维数组方面的知识. 数组当中的每个元素都只带有一个下标的时候,这样的数组就是一维数组,一维数组实质上 ...
- c语言程序设计一维数组教案,C语言一维数组教案.doc
C语言一维数组教案.doc 学学 科科计算机科学与技术 课课 程程C 语言程序设计 课课 题题一维数组 课课 时时2 教学目标教学目标1.掌握一维数组的定义和引用 2.掌握一维数组的初始化方法 3.了 ...
- java二维数组遍历后转为一维数组_java数组(一)
数组的定义 数组是相同类型数据的有序集合. 简单理解就是:数组是由若干个相同类型的数据,按照一定的顺序组合而成的.数组中的每一个数据我们可以称为元素,每个元素可以通过索引(下标)来访问(获取). 数组 ...
- LeetCode_数组_简单题
目录 26.删除排序数组中的重复项 27.移除元素 53.最大子序和 66.加一 88.合并两个有序数组 118.杨辉三角形 119.杨辉三角形II 717.1比特与2比特字符 989.数组形式的整数 ...
- 【C语言】sizeof(数组名),包括 一维数组、字符数组、二维数组
目录 1. 数组名.sizeof(数组名).&数组名 2. 一维数组的sizeof() 2.1 整型数组的sizeof() 2.2 字符数组的sizeof() 2.3 字符串赋值给字符数组的s ...
- java二维数组遍历后转为一维数组_[基础篇]-基础知识整理-05-数组基本概念
数组 数组是大部分编程语言所支持的数据结构,Java也支持数组,Java的数组是一种引用类型的变量,Java程序通过数组引用变量来操作数组,包括获取数组的长度,访问数组的值等. 数组的基本概念 数组是 ...
最新文章
- php-fpm开启报错-ERROR: An another FPM instance seems to already listen on /tmp/php-cgi.sock
- 软件测试:黑盒白盒与动态静态之间有必然联系吗
- 【ZooKeeper Notes 14】数据模型
- 开发者需要知道的有关软件架构的五件事
- Visual Studio 2012 调试程序加载缓慢,提示正在下载符号
- BZOJ1001 狼抓兔子
- 安卓设置菊花动画_Android仿ios加载loading菊花图效果
- Eclipse 搭建Android开发环境(整理)
- 使用SWig出现调用异常的情况
- cetk使用方法--nand flash测试
- [bzoj4003][JLOI2015]城池攻占_左偏树
- 烂泥:NFS做存储与KVM集成
- openStack 手动部署文档
- 智慧解析第20集:破解迷魂术
- 跳级全奖进哈佛,连马云都忌惮三分,赚18个亿后隐退美国,如今的他在干什么?...
- 基于java物流管理信息系统
- 为什么快捷指令无法将媒体转换为文本_快捷指令自动化可以做什么,不能做什么?...
- LSTM多输入时间序列预测之股价预测
- matlab 母小波,小波变换的定义.ppt
- 基于android的资源文件管理器
热门文章
- 使用action framework 实现order change时自动发送邮件
- User status for Service Order
- 如何使用参数调用SAP UI5的bingAggregation
- Fiori launchpad里tile的个数是如何从后台取回来的
- nodejs因buildpack指定不当部署到CloudFoundry后出的一个错误
- SAP SuccessFactor学习中心的通知机制
- SAP Cloud for Customer创建Account也会生成对应的Business partner实例
- 12-factor应用和微服务架构应用的区别
- python默认参数举例_Python之在函数中使用列表作为默认参数
- uni-app中使用lodash_Vue 使用中的小技巧