南师大 C语言易错易考点

上传人:qt****68 文档编号:44432743 上传时间:2018-06-09 格式:DOC 页数:14 大小:86KB
返回 下载 相关 举报
南师大 C语言易错易考点_第1页
第1页 / 共14页
南师大 C语言易错易考点_第2页
第2页 / 共14页
南师大 C语言易错易考点_第3页
第3页 / 共14页
南师大 C语言易错易考点_第4页
第4页 / 共14页
南师大 C语言易错易考点_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《南师大 C语言易错易考点》由会员分享,可在线阅读,更多相关《南师大 C语言易错易考点(14页珍藏版)》请在金锄头文库上搜索。

1、C C 语言笔试易错考点语言笔试易错考点作者按:虽然了解以下的知识对于你的编 程能力基本不会有什么提高,但我们希望 体现的是研究一门学问时的细心和专注。 作为程序设计的入门语言 C,如果你在学习 时能很留意这些细节的知识点,那么可以 预测你在将来漫长的计算机学习过程中也 会很顺利的。1. 关于条件表达式。形如:逻辑表达式? 表达式 1 : 表达式 2。 逻辑表达式的值若为非零(真),则条件 表达式的值等于表达式 1,若逻辑表达值的 值为零(假),则条件表达式的值等于表 达式 2 的值。特别要注意的是条件表达式 的结合方向是从右向左结合的。 例:与 y=(x0?1:x0) y=1;else if

2、(x0?1:x0?1:(x5)printf(“%d“,x);elseprintf(“%dn“,x-); 8. 各类运算符的优先级别:详细请看谭老 的C 程序设计(第二版)的 P375 页。 初等运算符(括号加结构体运算符) 单目运算符(注意逻辑非运算符! 它是除 初等运算符外具有最高优先级别的) 算术运算符(先乘除模,后加减,再移位) 关系运算符 逻辑运算符(是不合法的。第四章 逻辑运算和判断选取控制1 关系运算符:c 提供种关系运算符( = = != )前四种优先级高于后两种。2 If 语句C 提供了三种形式的 if 语句If(表达式) 语句If(表达式) 语句 1 else 语句 2If(

3、表达式 1) 语句 1Else if(表达式 2) 语句 2else 语句 n3 条件运算符(ab)?a:b 条件为真,表达式取值 a,否 则取值 b4 Switch 语句Switch(表达式)case 常量表达式:语句; break;case 常量表达式:语句 2; break;case 常量表达式 n:语句; break;default :语句;第五章 循环控制1 几种循环语句goto 语句(现已很少使用)while 语句 先判断表达式后执行语句do-while 语句 先执行语句后判断表达式for 语句2 Break 语句和 continue 语句Break 语句用于跳出循环,contin

4、ue 用于 结束本次循环。第六章 数组1 一维数组c 规定只有静态存储(static)和外部存储 (extern)数组才能初始化。给数组初始 化时可以不指定数组长度。2 二维数组3 字符数组部分字符串处理函数puts(字符数组) 将一个字符串输出到终 端。gets(字符数组) 从终端输入一个字符串到 字符数组,并且得到一个函数值,为该字 符数组的首地址strcat(字符数组,字符数组 2) 连接两 个字符数组中的字符串,数组 1 必须足够 大。Strcpy(字符数组,字符串 2) 将字符 串拷贝到字符数组中。Strcmp(字符串 1,字符串 2) 比较字符串, 相等返回 0,字符串字符串 2,

5、返回正 数,小于返回负数。Strlen(字符数组) 求字符串长度。Strlwr( 字符串) 将字符串中的大写字母 转换成小写Strupr( 字符串) 将字符串中的小写字 母转换成大写以上是一些比较常用的字符串处理函数。第七章 函数1 关于形参和实参的说明 在函数被调用之前,形参不占内存 实参可以是常量、变量或表达式 必须指定形参的类型 实参与形参类型应一致 实参对形参的数据传递是“值传递“,即 单向传递2 函数返回值如果想让函数返回一个值,在函数中就要 用 return 语句来获得,在定义函数时也要 对函数值指定类型,如果不指定,默认返 回整型。3 函数调用1)注意在函数调用时实参和形参的个数

6、、 类型应一一对应。对实参表求值的顺序是 不确定的,有的系统按自左至右,有的系 统则按自右至左的顺序。这一点要注意。2)函数调用的方式:函数语句,函数表达 式,函数参数3)如果主调函数和被调函数在同一文件中, 并且主调函数在前,那么一般要在主调函 数中对被调函数进行说明。除非:(1)被调 函数的返回值类型为整型或字符型(2)被调 函数出现在主调函数之前。4)对函数的说明和定义是不同的,定义是 指对函数功能的确立,包括指定函数名, 函数值类型,形参及其类型、函数体等。 说明则只是对已定义的函数返回值类型进 行说明,只包括函数名、函数类型以及一 个空的括弧,不包括形参和函数体。5)c 语言允许函数

7、的递归调用(在调用一个 函数的过程中又出现直接或间接的调用该 函数本身)。4 数组作为函数参数1)数组元素作为函数参数 和一般变量相 同2)数组名作参数应该在主调和被调函数分 别定义数组,形参数组的大小可以不定义。 注意:数组名作参数,不是单向传递。3)多维数组作参数,在被调函数中对形参 数组定义时可以省略第一维的大小说明, 但不能省略第二维或更高维的说明。5 局部变量和全局变量从变量作用域角度分,变量可分为局部变 量和全局变量。1)内部变量(局部变量)在一个函数内定义,只在函数范围内有效 的变量。2)外部变量(全局变量)在函数外定义,可以为本文件其它函数所 共用,有效范围从定义变量的位置开始

8、到本文件结束。建议尽量少使 用全局变量,因为它在程序全部执行过程 中都占用资源,而且使函数的通用性降 低了。如果在定义外部变量之前的函数要 想使用该外部变量,则应在该函数中用 extern 作外部变量说明。6 动态存储变量与静态存储变量从变量值存在的时间(生存期)角度来分, 可分为静态存储变量和动态存储变量。静态存储指在程序运行期间给变量分配固定 的存储空间,动态存储指程序运行期间根 据需要动态的给变量分配存储空间。C 语言中,变量的存储方法分为两大类:静 态存储类和动态存储类,具体包括:自动 的(auto),静态的(static),寄存器的 (register),外部的(extern)。1)

9、 局部变量的存储方式函数中的局部变量如不作专门说明,都之 auto 的,即动态存储的,auto 可以省略。 局部变量也可以定义为 static 的,这时它 在函数内值是不变的。静态局部变量如不 赋初值,编译时系统自动赋值为,动态 局部变量如不赋初值,则它的值是个不确 定的值。C 规定,只有在定义全局变量和局 部静态变量时才能对数组赋初值。为提高 执行效率,c 允许将局部变量值放在寄存器 中,这种变量叫 register 变量,要用 register 说明。但只有局部动态变量和形 式参数可以作为 register 变量,其它不行。2) 全局变量的存储方式全局变量在函数外部定义,编译时分配在 静态

10、存储区,可以在程序中各个函数所引 用。多个文件的情况如何引用全局变量呢? 假如在一个文件定义全局变量,在别的文 件引用,就要在此文件中用 extern 对全局 变量说明,但如果全局变量定义时用 static 的话,此全局变量就只能在本文件 中引用了,而不能被其它文件引用。3) 存储类别小结从作用域角度分,有局部变量和全局变量局部变量:自动变量,即动态局部变量 (离开函数,值就消失)静态局部变量(离开函数,值 仍保留)寄存器变量(离开函数,值就消失)(形参可定义为自动变量和寄存器变量)全局变量:静态全局变量(只限本文件引 用)全局变量(允许其它文件引用)从存在的时间分,有静态存储和动态存储动态存

11、储:自动变量(本函数内有效)寄存器变量(本函数内有效)形参静态存储:静态局部变量(函数内有效)静态全局变量(本文件内有效)全局变量(其它文件可引用)从变量值存放的位置分静态存储区:静态局部变量静态全局变量全局变量动态存储区:自动变量和形参寄存器内:寄存器变量7 内部函数和外部函数内部函数:只能被本文件中的其它函数调 用,定义时前加 static,内部函数又称静 态函数。外部函数:可以被其它文件调用,定义时 前加 extern,如果省略,则隐含为外部函 数,在需要调用此函数的文件中,一般要 用 extern 说明。第八章 预编译处理c 编译系统在对程序进行通常的编译之前, 先进行预处理。c 提供

12、的预处理功能主要有 以下三种:1)宏定义 2)文件包含 3) 条件编译1 宏定义不带参数的宏定义用一个指定的标识符来代表一个字符串, 形式:#define 标识符 字符串几点说明:) 宏名一般用大写) 宏定义不作语法检查,只有在编译被 宏展开后的源程序时才会报错) 宏定义不是 c 语句,不在行末加分号) 宏名有效范围为定义到本源文件结束) 可以用#undef 命令终止宏定义的作用 域) 在宏定义时,可以引用已定义的宏名带参数的宏定义定义形式:#define 宏名(参数表) 字 符串这和函数有些类似,但他们是不同的:) 函数调用时,先求实参表达式值,再 代入形参,而宏只是简单替换,并不求值) 函

13、数调用是在程序运行时分配内存的, 而宏展开时并不分配内存,也没有返回值 的概念) 对函数中的实参和形参都要定义类型, 而且要求一致,宏名无类型,其参数也没 有类型。) 函数只有一个返回值,而宏可以得到 几个结果) 宏替换不占运行时间,只占编译时间, 而函数调用占运行时间2 文件包含处理#include “文件 1“ 就是将文件 1 的全部内 容复制插入到#include 位置,作为一个源 文件进行编译。在#include 命令中,文件名可以用“ “也可 以用,假如现在 file1.c 中包含 file2.h 文件,“ “表示系统先在 file1.c 所在目录中找 file2.h,如果找不到,再

14、按 系统指定的标准方式检索目录,表示系 统直接按指定的标准方式检索目录。所以 用“ “保险一点。3 条件编译条件编译指不对整个程序都编译,而是编 译满足条件的那部分。条件编译有以下几 种形式:1)#ifdef 标识符程序段#else程序段#endif它的作用:当标识符在前面已经被定义过 (一般用#define),则对程序段编译, 否则对程序段编译。)#ifndef 标识符程序段#else程序段#endif它的作用和#ifdef 相反,当标识符没被定 义过,对程序段编译,否则对程序段 编译。)#if 表达式程序段#else程序段#endif它的作用:当表达式值为真(非)时, 对程序段编译,否则对

15、程序段编译。第九章 指针指针说白了就是地址。指针变量就是 用来存放指针(地址)的变量。1 变量的指针和指向变量的指针变量读起来很拗口,说白了就是变量的地址和 用来存放变量地址的地址变量。因为一个 变量在编译的时候系统要为它分配一个地 址,假如再用一个变量来存放这个地址, 那么这个变量就叫做指向变量的指针变量, 也就是用来存放变量地址的这么一个变量。 所谓“指向“就是指存放的地址,如指 向变量的指针变量,“指向“就是指用来存 放变量的地址,再如指向数组的指针变量, “指向“就是指存放数组的地址。只要理解 了这个,指针也就不难了。另外,还有指 向字符串的指针变量,指向函数的指针变 量,指向指针的指

16、针变量等。1) 指针变量的定义形式:类型标识符 *标识符 如:int *pointer;要注意两点:*表示 pointer 是个指针变量, 在用这个变量的时候不能写成*pointer, *pointer 是 pointer 指向的变量。一个指 针变量只能指向同一个类型的变量。如上 面pointer 只能指向 int 型变量。2)指针变量的引用两个有关的运算符:然后用*(p+i)引用。注意:指针变量指向数组 a 首地址,则 p+指向数组的下一元素地址,即 a1的 地址。3)数组名作函数参数形参数组和实参数组之间并不是值传递, 而是共用同一段地址,所以在函数调用过 程中如果形参的值发生变化,则实参的值 也跟着变化。4)指向多维数组的指针和指针变量以二维数组为居多。假设定义了一个二维 数组 a34,那么a 代表整个二维数组的首地址,也代表第 0 行的首地址,同时也是第 0 行第 0 列的元 素的首

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号