




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 语言入门必须掌握的 75个知识点1、 C 语言中整数默认为 INT 型,两个整数相除(如 1/2结果仍然是整数,要得到带小数 点的答案则要改成 1.0/22、在 C 语言中, “ =”是赋值运算符,表示把某个值赋给某个变量(X=0即把 0值赋给 X 变 量 ; “ =”是关系运算符,表示“等于” (X=0即 X 等于 0 ,在编写 C 程序时要注意 区分。3、 1个字节等于 8位二进制(某整形数据按照 2字节在内存中分配空间,即该数据对应的 二进制形式是 16位二进制 ; 在 AS C 码中,英文字母(不分大小写 、 英文标点占一个 字节,中文汉字、中文标点占两个字节。4、 基本运算符的优先等级 -(PS:手机无法显示部分符号 “! ” than 算术运算符 (+/-/*than关系运算符 than 逻辑运算符 than 赋值运算符 (=;要想从 C 菜鸟变成 C 老手,一些基本 的优先等级是必须知道的(C 运算符的优先等级详见附录 C 5、关于 putchar 函数 -putchar 函数即字符输出函数,表示向输出设备(显示器输出一 个字符。无论用户输作何种输入,函数都只会输出字符(putchar(65输出结果是“ A ” , putchar( 65 输出结果是“ 65” ; putchar 函数可以通过输出控制字符,让程序执行某种 指令(putchar( n 则程序会执行换行指令 。6、教材在介绍格式符的章节里有不准确的地方(见 P33 -d 格式符、 s 格式符、 f 格式 符的介绍里, “ m ”应是最少输出位数(书上的描述是“总位数 ” :%md, %ms, %mf,分别对应 -输出最少 m 位整型数据, m 位字符串, m 位浮点数 , 位数不足时左补空格。 7、对于我们来说, C 语言不仅是一门必修课。现代人类生活中所用的几乎每件电子和机械 产品中都会集成有单片机,单片机的前景是很广阔的(有兴趣的同学可以向老师咨询或 者上网了解 , 要设计出现代化的电子产品无疑要懂得用单片机。 单片机的运行全靠程序, 不把程序设计学好如何谈得上使用?所以,希望各位能够重视 C 语言这门课程。8、定义变量时不能使用赋值语句。 ” int i=j=k=0; ” 这种定义方法有误,要正确定义变量并对 变量进行初始化,则应修改成“ int i=0,j=0,k=0; ” (顺带提醒一下,每个语句的结尾都应 该添上“; ” 9、关于 if 语句 -“ if(”括号里面输入的数据或表达式是其判定条件,只要数据或表达式 对应的值非零,便会执行 if 语句之后的语句,反之不执行。 (如语句“ if(a=0” , 具体是 把 0值赋给 a ,括号里的数值是 0,则不执行 if 语句之后的内容10、基础知识巩固 -结构化程序设计的三种基本结构:顺序结构、选择结构、循环结构; 算法的 4种表示方式:自然语言、伪码、流程图、 N-S 图。对于一些基础的 C 语言知识 最好能够做到心中有数,不仅是为了巩固基础,这些内容以后考试也会涉及到的。 11、 强制类型转换 -运用强制转换运算符可以实现对变量的数据类型进行转换, 强制转换 运算符的格式为“ (类型名 ” ,如(int ,是其中一种强制转换运算符。 (intx+y-只对 变量 x 进行强制转换; (int(x+y-对 x+y的值进行强制转换。12、 条件运算符 -运算优先等级低于关系运算符, 高于赋值运算符。 条件运算符的结合性 是自右至左,使用时有以下技巧:第一个条件运算符的“:”后面的内容加上括号 (手机 无法正常显示例子,详见 P46中条件运算符的介绍 。13、利用关系运算符对字符和数据进行比较时,要先将字符转换成对应的 ASC 值。如“if(A=65” ,要先将 A 转换成对应的 ASC 值(65 ,再和 65进行比较。14、 continue 语句和 break 语句的使用:continue 语句的作用只是跳过该次循环,转而进入 下一次循环条件的判断,并不会中止整个循环; break 语句只能用在 switch 语句和循环 体内,在循环体内的作用是直接终止整个循环体,不再进行任何循环条件判断和执行循 环体内的语句。15、对于无符号变量,二进制的最高位代表数据的最高位;对于有符号变量,二进制的最高 位数代表数据的符号位,仅用来决定数据是正数还是负数,在进行反码、补码运算时不 参与运算。16、使用 case 语句时一定要在 case 后面加空格(如“ case 1” ,否则系统会把 case 与常量 表达式一同识别为一个标识符(如“ case1” ,是一个标识符 ; case 后面一定要是一个常 量表达式,不能是关系表达式或者别的表达式 -常量表达式,必须的 17、字符与字符,字符与数据均可以通过关系表达式进行比较。进行比较时,字符先转换成 对应的 ASC 值。 (if(AB先把 A 、 B 分别转换成 65、 66; if(65B先把 B 转换成 66 18、逻辑运算符“非” (“! ” -书上说的原值取反并非取相反数。逻辑“非”的运算法则 中, “取反”是“取反义值” :对非 0值取 0(如“! 2”等于 0,代表“假 ” ,对 0取非 0值(如“! 0”等于 1, 代表“真” ;凡是非 0值都能代表“真” , C 语言中的“真”默 认用数值“ 1”来表示(即当运算结果为“真”时对应的数值是 1 。19、循环结构中要让变量进行自增或自减时,既可以使用前缀自增自减(如 +i,-i ,也可 以使用后缀自增自减(如 i+,i- ,互换两种增减方式对循环结构不造成影响,编写 C 程序时可按照自己的个人习惯进行选择。 (由于自增自减在循环结构中一般是独立语句, 所以可以互换20、编译器在求解逻辑表达式的值时,采用“非完全求解”的方法,并不是所以的逻辑运算 符都被执行,只有在需要执行下一个逻辑运算才能求出表达式的解时,才继续运算(如 “ 0&2&3” , 0代表假,后两个表达式不必判断,运算立即终止21、 goto 语句 -goto 语句的作用是无条件转向“语句标号”处执行(如“ ibm :x=a”中, “ ibm :”即为“语句标号” ; “语句标号”仅仅对 goto 语句有效, “语句标号”后面的语 句在程序中照样会执行, 也就是说“语句标号”不影响其后语句的执行,只是一个标记; 因为无条件转向使程序结构无规律、可读性差,一般应避免使用 goto 语句,除非它能大 幅提高程序的执行效率。22、 1、强烈建议大家在写复杂程序之前先把算法写出来! ! ! ! ! ! (一般来说,采用流程图来 写算法比较方便 2、 while 语句 -条件符合时执行语句,直到不符合条件; do-while 语句 -先执行语句,再进行判定,条件符合时继续执行语句。两种“ while ”语句要视 实际情况来使用。23、用 printf 来输出浮点型数据时,一般格式为【 printf(“ %f” , 浮点型变量或浮点型常量 】 , 系统默认输出的浮点数有 6位小数,如果需要增加或减少输出的小数位数,可以利用格 式【 printf(“ %.nf” , 浮点型变量或浮点型常量 】 ,其中的 n 表示了输出的浮点数的小数位 数。 (PS :用格式【 printf(“ %lf” , 浮点型变量或浮点型常量 】无法改变小数位数 24、如果被调函数的返回值是整型或字符型, 可以不对被调函数进行声明, 而直接调用。这 时, 系统将自动对被调函数的返回值按整形处理。 (也就是说, 在没有对函数返回值进行 定义的情况下,系统默认为整型量25、关于无参函数 -一般情况下,无参函数没有返回值,此时函数类型标识符可以写为 void ,向系统表明该函数将不会返回任何值。此外需要说明的是,如果要定义带返回值 的无参函数, 也是可以的。 (无参函数也可以有返回值, 不过一般情况下让它有返回值也 没多大意义26、 形参变量只有在函数被调用时才分配内存单元, 在调用结束时, 便会释放所分配的内存 单元。因此,形参只在本函数内部有效,函数调用结束返回主调函数后则不能再使用该 形参变量了。 (也就是说,形参变量在使用过后便会“消失” 27、关于函数参数 -把某个函数 A 作为另一个函数 B 的实际参数时,必须保证 A 函数有 返回值【如 sqrt(sum(a,b,sum函数必须有返回值】 ;如果在 A 函数内, B 函数和 C 函数 同时充当 A 函数的实际参数,则按照自右向左的顺序求值(当求值顺序会影响函数结果 时就要注意这一点 。 【如 printf(“ %d,%d” ,sum(a,b,sqrt(c,先计算 sqrt 函数的值】 28、 “ void ”是其中一个 C 语言关键字,用来对函数类型进行声明,表明函数不会有返回值; 被“ void ”声明了的函数不能用来给变量赋值,因为函数是没有值的。29、主函数放最后的话,可以不用进行函数声明(如“ void fun(long” ,是一个函数声明 ; 如果主函数不是放在最后, 要保证所有函数在 main 函数出现之前已经声明了函数类型和 形参变量类型。30、初学者编写函数时的常见错误:、函数体的花括弧或复合语句的花括弧不配对;、 调用函数时, 实参与形参在个数、 类型以及顺序上不匹配; 、 调用库函数时忘记 # include语句, 调用自定义函数时忘记进行函数声明。 (其中第三点是最常见的错误, 记得调用库 函数时要加头文件31、主函数中定义的变量只能在主函数中使用,不能在其他函数中使用。同时,主函数中也 不能使用其他函数中定义的变量。主函数也是一个函数, 虽然被称作“主函数” , 但实际 上它与其他函数是平行关系,应予以注意。32、关于全局变量 -1. 它不属于哪一个函数, 它属于一个源程序文件 ;2. 其作用域是整个源 程序(在哪个函数哪个复合语句中都能取用 ;3. 所有全局变量的储存位置都是静态储存 区。33、 全局函数建议尽量少用, 原因:1. 全局变量在程序的全部执行过程中都占用着存储单元; 2. 降低函数的独立性,继而降低程序的可靠性,同时也不利于将来程序的移植(最主要 的原因,用太多的全局变量会导致函数移植后难以独立使用 ; 3. 使用过多的全局变量, 会使程序的可读性降低,人们往往难以明确判断各个时刻各变量的取值。34、关于自动变量(auto -函数中的局部变量,如不专门声明为 static 存储类别,都是 动态地分配存储空间的,数据存储在动态存储区中,函数中的形参变量和在函数中定义 的局部变量(包括在复合语句中定义的变量都属此类,在调用这种函数时系统会自动 给他们分配空间, 在函数调用结束时将自动释放这些空间。 (最大的特点是函数调用完毕 后会“消失” 35、 #include-文件包含指令,一个 include 命令只能指定一个被包含文件(也就是说,要 包含多个文件,则需要用多个 include 命令 ;文件包含允许嵌套,即在一个被包含的文 件中还可以包含另一个文件。36、寄存器变量 -为了提高效率, C 语言允许将频繁使用的局部变量的值存放到 CPU 的 寄存器中,这种变量成为“寄存器变量” ,用关键字 register 来声明;会“消失”的变量 才可以作为寄存器变量(如局部自动变量、形参变量 ; 寄存器变量的数目是有限的,不 能任意定义。37、 静态局部变量 -静态局部变量储存在静态储存区; 如果不给静态局部变量赋初值, 则 系统自动赋其 0值;静态局部变量只能进行一次初始化(即赋初值,如“ int x=0” 38、 关于无参数宏 -无参数宏可以用来替代常数和表达式; 无参数宏的定义必须在函数外, 作用域为自宏定义命令起到源程序结束 (定义之后就能用到最后 ; 宏定义后面不用加分 号。39、 关于带参数宏 -带参数宏在进行替换时, 保留函数中的实参 (可以理解成把宏替换掉后再将实参“放回去” ;定义带参数宏时,为了避免程序在执行过程中出现副作用,需 要加两重括号:第一重括号加在形参上, 第二重括号加在整个字符串上 (如 “ #define M(x (x*(x ” 40、 关于指针型变量 -指针型变量只能存放变量的地址, 赋值时只能赋予地址; 未经赋值 的指针变量不能使用 (有可能导致死机 ; 定义指针时的类型说明符:表示了指针型变量 指向的变量的数据类型(可记成“指向类型” 。41、 数组和指针型变量的联系 -数组名是一个地址, 可以把数组名赋予指针型变量 (假设 p 是指针型变量,执行语句“ p=a”后, p 指向数组 a 的第一个元素 a0 ;若已经把数组 名赋予指针型变量,则指针型变量可以通过加减运算改变其对数组 a 的指向(执行语句 “ p=a; p=p+2; ”后, p 指向数组 a 的第三个元素 a2 。42、 指针变量的初始化 -指针变量必须进行初始化才能使用, 一般格式有两种, 一种是同 时进行类型说明和赋值(如 int *p=&x; ,一种是把类型说明和赋值分开进行(如 int *p;p=&x; ,初始化必须包括类型说明和赋值。43、指针运算符 -符号为“ *” ,作用是返回一个指针所指向的对象的值。 (如“ int *p=&x; i=*p; ” ,语句“ i=*p; ”在执行时先执行指针运算符,把 p 指向的变量 x 的值调出来,然后把该值赋给变量 i 44、对指针变量进行赋值 -定义两个指针变量 p1,p2, “ int *p1=&x,*p2=&y” , 当执行语句 “ p1=p2”时, p2的值对应的是 y 的地址,把该值赋予 p1,则此时 p1的值也会变成 y 的地址;当执行语句“ *p1=*p2”时, p2指向的变量 y 的值会被赋予 p1指向的变量 x 。 45、如果要把指针变量 p 指向数组 a 的第一个元素,可以使用下面的语句:“ p=&a0;” , 或 “ p=a;”两种赋值方式是完全等效的。 (这里的“ a ”就是“ a0”的地址46、 关于空指针 -空指针不同于未赋值的指针变量, 空指针可以使用而未赋值的指针变量 不能;空指针不指向任何变量,对应的值是 0(假设 p 是一个空指针,则有 p=0 。 47、二维数组的两种赋值 -设 p 是指针变量 ,a 是一个二维数组,运行语句“ p=a”后, p 指向二维数组的第一行;运行语句“ p=a0”后, p 指向二维数组的第一行第一个元素 a00。48、二维数组行指针和列指针 -假设 aij是一个二维数组,则“ a+m”指向二维数组的 第 m 行,是一个行指针; *(a+m是一个列指针,指向第 m 行第 0列(控制由行转为列, 但仍为指针 ; *(*(a+m是数组元素 am0的值。49、 函数中的指针变量 -函数中的指针变量用来对主函数中的变量进行运算, 这是指针变 量在函数中的重要应用;关于数组名 -数组名是数组第一个元素的首地址,它不是一 个变量,不能对其数值进行更改;50、 调用形参为指针类型的函数时, 注意要保证函数内新增添的指针变量已经进行定义和初 始化,并且要在运行程序之前做好检查,确保调用函数时没有对无关地址的内容进行修 改,这样便能避免严重后果的发生。 (运用指针进行编程确实需要小心谨慎51、 字符串及其操作 -对字符变量进行赋值时使用的必须是一对单引号, 使用双引号来赋 值属于非法操作; C 语言中空字符用 0 来标识,此处的 0 实际上是指八进制的 0。 52、 指向指针的指针 -指针变量也有自己对应的地址, 这个地址储存的是指针变量的值 (具 体为另外某个变量的地址 ;可以把指针变量(假设是 P1的地址值赋予另外一个指针 变量(假设是 P2 ,则此时 P2指向 P1, P2是一个指向指针的指针。53、 关于字符数组 -字符型与整型互相通用, 因此 int ai也可以定义为字符数组。 但两种 类型分配的字节不同,用整型来定义会浪费空间,另外这样定义的实际意义也不大,这 里只是为了说明其合法性。 (不知道考试会不会涉及到这种内容所以给大家提点一下 54、字符串连接函数 strcat(-用于把两个字符串连接在一起,组成一个字符串。用法如下:strcat(str1,str2,其中 str1和 str2是两个字符串,该函数把 str2连接在 str1中的字符 串后面,并删除原来 str1后面的空字符。使用该函数须保证 str1能够储存连接后的长字 符串。55、字符串比较函数 strcmp(str1,str2-按照字符的 ASC 值,对两个字符串自左向右逐 个字符比较大小,直到遇到不同字符或同时遇到空字符为止。同时遇到空字符时函数的 返回值为 0; 遇到不同字符时, 比较两个字符的 ASC 值, 当属于 str1的那个字符的 ASC 值较大时,函数的返回值大于 0,较小则函数返回值小于 0。56、 字符串 copy 函数 strcpy(str1,str2-该函数的作用是把某个字符串数组的内容复制到另 外一个字符串数组中。执行 strcpy 函数后,则 str1中的内容变成 str2中的内容,使用时 要保证字符串数组 str1有一定的长度, 足够容纳 str2的内容。 (三个字符串函数的用法都 比较容易把握,别把函数名记错就没问题了57、 测试字符长度函数 strlen(str1-用于测试字符串的实际长度, 其中不包括空字符, str1可以是字符串或字符数组。 (灵活调用各种字符串处理函数能够实现许多不同的功能, 希 望大家能够熟练掌握58、结构体和结构体变量的定义 -结构体的定义方式:struct 结构体名 成员表; ,成员 表中的各个部分必须包括成员类型及成员名;结构体变量的定义方式:struct 结构体名 结 构体变量,结构体变量可以有多个,各个变量之间用逗号间隔开来。59、结构体和结构体变量的定义(2 -一共有三种方法:1、定义结构体,再定义结构体 变量; 2、 定义结构体类型的同时定义结构体变量; 3、 利用无结构体类型名定义变量 (第 一种和第二种比较常用, 由于篇幅的限制, 具体的定义形式详见教材 p152 p153。 PS :三种定义方法都有提及到结构体嵌套,虽然篇幅很少,但也要注意一下60、定义了结构体变量后,系统要为变量分配内存空间。 在内存中,结构体变量占有连续的 一段内存空间:结构体变量占用的一段连续内存空间 =结构的各成员所占用的内存空间 之和。61、结构体数组 -以结构体变量作为元素的数组即为结构体数组(PS :XX 数组就是以 XX 变量作为元素的数组 ,和结构体变量的定义十分相似,结构体变量的定义方式有三 种:先定义结构体,再定义结构体数组;定义结构体类型的同时定义结构体数组;利用 无结构体类型名定义结构体数组。 (同样由于篇幅限制,具体定义格式详见 P156 62、字符串的输入和输出 (1 -用 scanf(和 printf(进行输入和输出字符串时,双引号内 应出现 %S, 输入项处应放入字符串数组的数组名(如 printf(“ %s” ,str1 ,其中 str1是数组 名,虽然输出的是 str1的内容,但这种格式的输出只要放入数组名就可以了 。63、用 puts(和 gets(来进行输入输出字符串时,要保证括号内的是单个字符数组名(是字 符数组名,而不是字符串数组名 。另外,利用 puts(函数进行字符串输出时,要保证括 号内数组名对应的数组的末尾是一个空字符,否则会出现奇怪的输出结果。64、成员运算符 -“ . ”是成员运算符,在所有运算符中它的级别最高。因此,在程序中 的任何地方, “结构体变量名 . 成员名”都是整体出现的。 (也就是说,我们可以习惯地把 “结构体变量名 . 成员名”看成一个整体65、 结构体指针变量 -当一个指针变量用来指向一个结构体变量时, 称之为结构体指针变 量;结构体指针变量的声明:struct 结构体名 *p, “ struct 结构体名”可视作一个类型说 明符(int 、 char 、 float 这些就是类型说明符 。66、 结构体指针变量的含义:如果 p 是一个结构体指针变量, 则 p 指向一个具有结构体名对 应的结构的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 和植物约会:享受独特园艺乐趣
- 青年时装搭配规范手册
- 水利工程监理工作规定
- 运用人工智能技术提升客户服务水平
- 信息安全防护与数据风险
- 2025中国人寿洛阳分公司(售后部门)招聘笔试备考题库及答案解析
- 临床检验医学实验室质量管理
- 工作规划展望总结报告
- 地产销售渠道拓展方案
- 乳癌诊断检验医学技术指南
- 光伏发电支架组件安装
- 新能源题库 -电气题库
- 危重患者抢救记录表
- 律师事务所分所名称检索登记表
- 《放射物理与防护》习题
- 2022年8月23曰更新附有答案
- 城市桥梁桥面防水工程技术规程(局部修订征求意见稿)
- 中医妇科学 痛经
- 192168,11设置路由器的步骤
- 110kv变电站启动试运行方案
- GB/T 8758-2006砷化镓外延层厚度红外干涉测量方法
评论
0/150
提交评论