c语言数组常见错误,C语言数组在使用中常见的几种错误.pdf

S C i 卜NOL & TE Q 月N创,)《白Y INI: 口书明A T I仁别

T 技 术

C 语言数组在使用 中常见 的几种错误

刘莉娜

(包头农牧学校 0 14030)

摘 要: 对C 语言的数组在定义和使用过程中出现的几种错误进行了讨论,指出了出错的原因,并举例分析具体说明,给出正确结论。

关键词: C 语言 数组 数组元素

中图分类号:TP 3 文献标识码:A 文章编号: 1672一379 1(2007)07(a 卜009 8一0 1

在C语言中,对数组定义的理解虽然看似 A 、 加t bI Z*3 51 B 、 纽t bl l o一101 增运算不断改变其地址值 ,从而达到给数组元

简单,但由于数组的使用范围相当广泛 ,在对 C 、1爪 n o D 、# deflne s lZE 10 I 素赋值的 目的。而选项B 中想当然的把数组

字符串、指针、函数等的过程中,都离不开数 5 习of ( ”%d l ,&‘n) ; int bl ll 】,nti bI lS zE I 名看作指针变量,利用它来使指针下移,指向

组。因此,有必要对数组在具体使用过程中容 对于选项A ,其下标虽为常量表达式,但 下一个数组元素 ,这是完全错误的。

易写错的、疏忽的、误解的、不易发觉的一些 2 ,3 。5 不能确定数组元素的个数 ,不能为整型

问题给予强调和说明。 常量。选项B 中的下标值为0 ,不符合定义数 4 多维数组中数组元紊的表示形式容易出

组的常理。在 C 选项中,虽先定义变量 ,给它 错

1 数组定义与使用时用错括弧 赋予确定的值 ,然后再定义数组 ,但 C 语言中 多维数组中数组元素的使用形式多样,必

其它高级语 言在定义和使用数组时多数 不允许在定义数组时使用变量做数组的下标。 须正确分析准确判断。由于多维数组下标个

用圆括弧,而 C 语言规定使用方括弧。定义多 而D 选项是选定义符号常量IS ZE ,然后使用 数多,但数组元素在内存中所 占的存储单元的

维数组时,其它高级语言中数组的各维下标大 它来定义数组b 。故正确答案为D 。 排列有一定的规则,在使用时,利用其规律 ,既

多数放在一个括弧中,而C 语言对多维数组的 可以使用下标表示 ,也可以灵活使用数组名作

定义及应用中,数组元素的每个下标数据必须 3 数组名作地址时理解出错 地址表示 ,还可以使用指针变量来操作。

分别用方括弧括起来。这样,学习过其它高级 数组名代表数组的首地址 ,且仅为首地 例7 :若有定义:int aI3)[41,( )不能表示

语言的人尤其容易按以往的习惯写错用错。 址,是常量不是变量,不能等同于指针变量。 数组元素al l ll l ]

例 1:在定义ni t 术 亚3】。之后 ,对a 数组应 例4 :下列程序段是给数组b 的元素赋值, A 、*(&a [ 1]+ 1 B 、,(al l l川) C 、

用正确的是( ) 不能选择的答案是() (*(a+ 1)川) D

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

《C和指针》提供与C语言编程相关的全面资源和深入讨论。《C和指针》通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序去。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。 第1章 快速上手 1.1 简介 1.1.1 空白和注释 1.1.2 预处理指令 1.1.3 main函数 1.1.4 read_column_numbers函数 1.1.5 rearrange函数 1.2 补充说明 1.3 编译 1.4 总结 第2章 基本概念 2.1 环境 2.1.1 翻译 2.1.2 执行 2.2 词法规则 2.2.1 字符 2.2.2 注释 2.2.3 自由形式的源代码 2.2.4 标识符 2.2.5 程序的形式 2.3 程序风格 2.4 总结 第3章 数据 3.1 基本数据类型 3.1.1 整型家族 3.1.2 浮点类型 3.1.3 指针 3.2 基本声明 3.2.1 初始化 3.2.2 声明简单数组 3.2.3 声明指针 3.2.4 隐式声明 3.3 typedef 3.4 常量 3.5 作用域 3.5.1 代码块作用域 3.5.2 文件作用域 3.5.3 原型作用域 3.5.4 函数作用域 3.6 链接属性 3.7 存储类型 3.8 static关键字 3.9 作用域、存储类型示例 3.10 总结 第4章 语句 4.1 空语句 4.2 表达式语句 4.3 代码块 4.4 if语句 4.5 while语句 4.5.1 break和continue语句 4.5.2 while语句的执行过程 4.6 for语句 4.7 do语句 4.8 switch语句 4.8.1 switch的break语句 4.8.2 default子句 4.8.3 switch语句的执行过程 4.9 goto语句 4.10 总结 第5章 操作符和表达式 5.1 操作符 5.1.1 算术操作符 5.1.2 移位操作符 5.1.3 位操作符 5.1.4 赋值 5.1.5 单目操作符 5.1.6 关系操作符 5.1.7 逻辑操作符 5.1.8 条件操作符 5.1.9 逗号操作符 5.1.10 下标引用、函数调用和结构成员 5.2 布尔值 5.3 左值和右值 5.4 表达式求值 5.4.1 隐式类型转换 5.4.2 算术转换 5.4.3 操作符的属性 5.4.4 优先级和求值的顺序 5.5 总结 第6章 指针 6.1 内存和地址 6.2 值和类型 6.3 指针变量的内容 6.4 间接访问操作符 6.5 未初始化和非法的指针 6.6 NULL指针 6.7 指针、间接访问和左值 6.8 指针、间接访问和变量 6.9 指针常量 6.10 指针的指针 6.11 指针表达式 6.12 实例 6.13 指针运算 6.13.1 算术运算 6.13.2 关系运算 6.14 总结 第7章 函数 7.1 函数定义 7.2 函数声明 7.2.1 原型 7.2.2 函数的缺省认定 7.3 函数的参数 7.4 ADT和黑盒 7.5 递归 7.5.1 追踪递归函数 7.5.2 递归与迭代 7.6 可变参数列表 7.6.1 stdarg宏 7.6.2 可变参数的限制 7.7 总结 第8章 数组 8.1 一维数组 8.1.1 数组名 8.1.2 下标引用 8.1.3 指针与下标 8.1.4 指针的效率 8.1.5 数组和指针 8.1.6 作为函数参数的数组名 8.1.7 声明数组参数 8.1.8 初始化 8.1.9 不完整的初始化 8.1.10 自动计算数组长度 8.1.11 字符数组的初始化 8.2 多维数组 8.2.1 存储顺序 8.2.2 数组名 8.2.3 下标 8.2.4 指向数组的指针 8.2.5 作为函数参数的多维数组 8.2.6 初始化 8.2.7 数组长度自动计算 8.3 指针数组 8.4 总结 第9章 字符串、字符和字节 9.1 字符串基础 9.2 字符串长度 9.3 不受限制的字符串函数 9.3.1 复制字符串 9.3.2 连接字符串 9.3.3 函数的返回值 9.3.4 字符串比较 9.4 长度受限的字符串函数 9.5 字符串查找基础 9.5.1 查找一个字符 9.5.2 查找任何几个字符 9.5.3 查找一个子串 9.6 高级字符串查找 9.6.1 查找一个字符串前缀 9.6.2 查找标记 9.7 错误信息 9.8 字符操作 9.8.1 字符分类 9.8.2 字符转换 9.9 内存操作 9.10 总结 第10章 结构和联合 10.1 结构基础知识 10.1.1 结构声明 10.1.2 结构成
简介: C语言是编程语言的一朵奇葩,虽已垂垂老矣,但却屹立不倒,诞生了数十年,仍然是最流行的编程语言之一。C语言看似简单,却不易吃透,想要运用好,更是需要积淀。本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,揭露了C语言那些鲜为普通开发者所知的秘密,旨让读者真正掌握C语言,从而编写出更高质量的C程序代码。 全书一共11章:第1章重点阐述了C语言不易被理解的多个核心概念,很多初学者理解这些概念时都会存误区;第2~8章对预处理、选择结构和循环结构的程序设计、数组、指针、数据结构、函数和文件等知识点的核心问题和注意事项进行了讲解;第9章介绍了调试和异常处理的方法及注意事项;第10章对C语言的若干容易让开发者误解误用的陷阱知识点进行了剖析;第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。 本书主要内容:  堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比;  预处理的疑难知识点,包括文件的包含方式、宏定义及其常见错误解析、条件编译指令和#pragma指令的使用等;  if、switch等选择结构语句的使用注意事项和易错点解析;  for、while、do while等循环结构语句的使用注意事项和易错点解析;  循环结构break、continue、goto、return、exit的区别;  一维数组、二维数组、多维数组、字符数组、动态数组的定义和引用,以及操作数组时的各种常见错误解析;  不同类型的指针之间的区别,以及指针的一般用法和注意事项;  指针与地址、数组、字符串、函数之间的关系,以及指针与指针之间的关系;  枚举类型的使用及注意事项,结构体变量和共用体变量的初始化方法及引用;  传统链表的实现方法和注意事项,以及对传统链表实现方法的颠覆;  与函数参数、变参函数、函数调用、函数指针相关的一些难理解和容易被理解错的知识点解析;  文件和指针的使用原则、技巧和注意事项;  函数调用和异常处理的注意事项和最佳实践;  与strlen、sizeof、const、volatile、void、void*、#define、typedef、realloc、malloc、calloc等相关的一些陷阱知识点的解析;  时间复杂度、冒泡排序法、选择排序法、快速排序法、归并排序法、顺序排序法、二分查找等常用算法的详细讲解;  良好的编码习惯和编程风格。
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值