C语言知识要点.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 知识 要点
- 资源描述:
-
第一章 概述 Ø c语言的源程序后缀(*.c),经过编译后生成目标程序(*.obj),经过链接后生成可执行文件(*.exe). Ø VC6.0的使用,跳过,上机课再讲解 Ø 解决问题的方法和步骤称为算法,包括数值运算和非数值运算。 Ø 算法的五个特点:有穷性、确定性、可以没有输入、必须有输出、有效性。 Ø 三种基本结构:顺序结构、选择结构、循环结构。由三种基本结构组成的算法可以解决任何复杂问题。 第二章 数据类型 Ø 2.1 n 任何一个可执行c程序,必须有且只有一个主函数main,程序总是从主函数开始执行,到主函数结束。 n 每条语句都是由半角的分号结束。 n 程序注释放在/*和 */之间,注释可以为任意内容,但不允许出现嵌套。 Ø 2.2 了解c语言数据类型分类 Ø 2.3 n 标识符命名规则:字母、数字、下划线组成,不能以数字开头。 n 标识符分为关键字、预定义标识符和用户标识符。 n 用户标识符不能使用关键字,尽量不要使用预定义标识符。 Ø 2.4 n 对于基本数据类型量,根据取值是否可以改变,分为常量和变量。 n 变量的值可以改变,常量的值不可以改变。 n 了解使用符号常量的好处。 Ø 2.5 n 2.5.1 u 整型常量根据进制分为八、十、十六进制,熟悉二、八、十、十六进制的转换。 u 只有十进制可以带负号,由0-9共10个数码组成。 u 八进制由0-7八个数码组成,必须有前缀0。 u 十六进制由0-9,A-F组成,必须有前缀0X(十六进制中的字母不分大小写)。 n 2.5.2 u 整型数据在内存中以补码的形式存放,正数和无符号数的补码为二进制原码。 u 负数的补码:①绝对值的二进制形式②按位取反③然后加1。 u 整型变量的分类:unsigned /signed short/ long int 及其数值范围。 u 整型变量定义的方法及其注意要点 Ø 2.6 n 2.61 u 实型数据在c语言中只使用十进制,分为小数形式和指数形式。 u 小数形式:由0-9和小数点组成,必须有小数点,可以有负号。 u 指数形式:aEn(a为十进制数,n必须为整数,都可以有负号,E不分大小写) n 2.62 u 实型变量使用float或double来定义。 u 实型数据有舍入误差,如1.0/3*3不等于1。 Ø 2.7 n 2.7.1 u 字符常量:只能使用半角的单引号,只能是单个的字符,如 ’a’、‘1’等。 u 字符可以是字符集中任意字符。字符 ’1’ 和数字 1 代表不同的值。 n 2.7.2 u 转义字符使用 ”\” 开头,代表的也是单个字符。 u 常用转义字符 ‘\n’ ‘\t’。 u 特殊转义字符 ‘\\’ ‘\’’ ‘\”’ u 八进制数表示转义字符 ‘\ddd’(ddd代表1-3位八进制数,没有前缀)。 u 十六进制数表示转义字符 ‘\xhh’(hh代表1-2位十六进制数,有前缀x) n 2.7.3 u 字符变量使用char来定义,如:char c;。 n 2.7.4 u 字符型数据在内存中占一个字节的空间,存放的是字符的ASCII 码。 u 字符数据可以参与运算,其值为字符的ASCII码值。 u 字符 ’a’ 的ASCII码值为十进制的97、八进制的0141、十六进制的0X61 给变量c赋值字符 ‘a’ 的六种表示形式: 字符形式 ①c = ’a’;②c = ’\141’;③c = ’\x61’; 整型形式 ④c = 97;⑤c = 0141; ⑥c = 0X61;。 n 2.7.5 u 字符串常量使用双引号括起来,如 ”abc”,内存中占有4个字节。 u 系统自动在字符串末尾添加一个字符’\0’作为字符串结束标记。 u 字符串占有的字节数因为有结束标记,所以占用空间比实际字符个数多一个。 n 2.8定义变量的时候给变量赋值称为变量赋初值,如:int a = 3, b = 1; 第三章 运算符和表达式 Ø 3.1了解c运算符的构成和分类 Ø 3.2 n +、-、*、/是双目运算符,具有左结合性。 n - 作为负号时,为单目运算符,具有右结合性。 n 参与运算的对象都为整型时,结果也为整型,如10/3的值为3。 n %为求余运算,运算对象只能为整数,如10%3的结果为1。10÷3=3…1。 n 运算符和操作对象构成的式子称为表达式,任何表达式都是有值的。 n 优先级决定了运算的先后顺序,结合性决定了运算的方向。 n 自加自减++ -- 运算的对象必须为变量,是单目运算符,右结合性。 n 自加自减前置后置都会使运算对象的值增1或减1。 n 前置则该表达式的值为当前变量的值,后置则表达式的值为当前变量的值加1或减1后的值。 Ø 3.3 n 赋值运算符 = ,右结合性,作用是把右边的值赋值给左边的变量。 n 赋值运算符两边数据类型不一致时,将自动进行数据类型转换,右边的类型或转换为左边的类型。 n 转换的具体规定:①实型-》整型,舍弃小数。②整型-》实型,增加小数部分③整型-》字符型,只取低8位。 n 复合赋值,优先级与结合性与赋值运算符相同。如 a += 3相当于a = a + 3。 Ø 3.4 n 逗号运算符 , ,一般形式:表达式1,表达式2 。规定把表达式2的值作为整个表达式的值。 n 逗号运算符的优先级最低。 Ø 3.5 n char 和short类型参与运算会自动转换为int类型 n float类型参与运算会自动转换为double类型 n 数据类型不同的数据混合运算时,会自动向精度高的方向转换为相同类型进行运算。 n 赋值运算的转换规则参考3.3 n 强制类型转换的作用是把表达式的结果强制转换为指定的数据类型,其一般形式:(类型说明符) (表达式) n 所有转换都是为了当次运算的需要,并不会改变变量原有的数据类型和数值。 第四章 顺序结构 Ø 4.0 程序中按语句出现顺序执行的结构程序顺序结构。 Ø 4.1 半角分号 ; 是c语言语句结束的标志,了解c语句的分类。 Ø 4.2 n 赋值表达式加分号 ; 构成赋值语句。 n 区分int a = b = c = 5;是非法的;a = b = c = 5;是合法的。 n 区分表达式和语句的区别(在于语句结束标志分号;)。 Ø 4.3了解输入输入的概念,使用系统提供的标准输入输入函数,需要添加stdio.h 头文件。 Ø 4.4 字符输入输出函数putchar和getchar,只能输入输出单个字符。 char c; /*定义字符变量*/ c = getchar(); /*使用字符输入函数给字符变量赋值*/ putchar(c); /*使用字符输出函数输出变量c所代表的字符*/ Ø 4.5 n 格式输出函数printf,一般形式: printf(“格式控制字符串” , 输出表列); n 格式控制字符串的一般形式: %[标志][最小宽度][.精度][长度]类型 ([ ]内为可选项)参考教材Page33的表。 n 格式输入函数scanf,一般形式: scan(“格式控制字符串” , 输入表列); n 格式控制字符串的一般形式: %[*][最小宽度][长度]类型([ ]内为可选项) 参考教材Page35的表。 第五章 选择结构 Ø 5.1 n 关系运算符 <、 <=、 >、 >=、 ==、 !=共6个,其中<、 <=、 >、 >=的优先级相同,高于==、 !=。 n 关系表达式的值是“真”或“假”,分别用1和0表示。 Ø 5.2 n 逻辑运算符 &&与、||或、!非,其中!的优先级高于&&,&&高于||。 n 熟悉逻辑运算的真值表。 n c语言没有表示逻辑值的数据类型,所以用1表示“真”,0表示“假”,但在判断的时候,非0值为“真”,0值为“假”。 n &&和||运算时,当根据运算符左边的表达式可以求出整个表达式的值的时候,右边的表达式将不会被执行。例如:1||任何表达式、0&&任何表达式。 n 判断闰年:(year % 4 == 0 && year % 100 != 0) || year % 400 == 0 Ø 5.3 n 5.3.1 u ① if(表达式) 语句 当表达式为真的时,执行语句,否则什么也不执行 u ② if(表达式) 语句1 当表达式为真的时,执行语句1 else 语句2 否则,执行语句2a u if后必须为表达式,此处可以为任意表达式,值为0则为假,!0则为真 u 后面的语句必须为一条语句,需要执行多条语句时,使用复合语句形式。 u 两种if结构在语法上都认为是一条语句 n 5.3.2 u 两种if结构中,语句部分又可以是if结构,这样就构成了嵌套。 u else总是和if配对的,不能单独出现,配对原则是:与它前面最近的没有配对的if进行配对 Ø 5.4 n 条件运算符 ? :的一般形式:表达式1?表达式2:表达式3 n 求值规则:计算表达式1为真,则表达式2的值为整个表达式的值 表达式1为假,则表达式3的值为整个表达式的值 Ø 5.5 n switch 语句,一般形式: swith(表达式) { case 常量1:语句1; case 常量2:语句2; case 常量3:语句3; default : 语句n; } n 表达式的值必须是整形或其兼容类型:short、long、char,不能用实型 n 掌握switch结构的执行过程 n break语句用于跳出switch结构,不能单独使用 第六章 循环结构 Ø 6.1 n while语句的一般形式: while(表达式) 循环体语句 n 执行过程,当表达式为真值时,执行循环体语句,否则循环结束。 n 循环体语句为单条语句,如需执行多条语句则需使用符合语句。 Ø 6.2 n do while语句的一般形式:do 循环体语句 while(表达式); n 执行过程,执行循环体,然后判断表达式,如果为真值,则继续执行循环体,否则循环结束。 Ø 6.3 n for语句的一般形式:for(表达式1;表达式2;表达式3) 循环体语句; n 执行过程: ①求解表达式1 ②判断表达式2的真假值,如果为假,循环结束 ③执行循环体并求解表达式3 ④转回到步骤② n 其中表达式1、2、3都是可以省略的,但括号里的两个分号不能省略。 n 省略表达式2相当于其值恒为真。 Ø 6.5 n break语句,在循环体中出现break语句,则退出循环,使循环结束。 n continue语句,结束本次循环,进入下次循环。 第七章 数组 Ø 7.1 n 7.1.1 u 一维数组的定义形式: 类型说明符 数组名[常量表达式]; 例: int a[10]; u []中的常量表达式必须为常量值,表示元素的个数。 n 7.1.2 u 数组元素的引用:数组名[下标] 例:a[2]。 u 下标可以为变量、常量、表达式等,下标是从0开始,表示第一个元素。 u 下标会自动取整,如 a[3.2] 等价于 a[3] n 7.1.3 u 一维数组的初始化:类型说明符 数组名[常量表达式]={值1,值2……}; u 可以只给部分元素赋值,若给全部元素赋值,可以省略数组的长度。 Ø 7.2 n 7.2.1 u 二维数组的定义形式: 类型说明符 数组名[常量表达式1][常量表达式2]; 例: int a[2][3]; n 7.2.2 u 数组元素的引用:数组名[下标] 例:a[0][0]。 n 7.2.3 u 二维数组初始化:①按行分段赋值 如:int a[2][3]={{1,2,3},{4,5,6}}; ②按行连续赋值 如:int a[2][3]={1,2,3,4,5,6}; u 可以对部分元素赋初值,未赋值的元素自动取0值。 u 如对全部元素赋初值,则第一维的长度可以不给出。 Ø 7.3 n 7.3.1 u 字符数组具有普通数组的特点,定义、引用、赋初值和普通数组相同,另还具有其他特殊的属性。 u 使用字符串赋初值: char c[] = “ABCDF”; 系统在字符串后自动添加结束标志’\0’,所以字符数组c有6个元素。 u 字符数组可以按照 “%s”格式,使用printf和scanf整体输入或输出。 n 7.3.2 u 字符串输出函数: puts(str1); //输出字符数组str1中的字符串。 u 字符串输入函数: gets(str1); //输入字符串给字符数组str1赋值。 u 字符串连接函数: strcat(str1,str2); //把字符数组str2中的字符串连接在字符数组str1的字符串后面。 u 字符串复制函数: strcpy(str1,str2); //把字符数组str2中的字符串复制到字符数组str1中。 u 字符串比较函数:strcmp(str1,str2); //比较字符数组str1和str2中字符串的大小,并返回结果(< 0 >0 =0)。 u 字符串测长函数:strlen(str1); //返回字符数组str1中字符串中实际字符的个数,不包括结束标志。 第八章 函数 Ø 8.1概述 n c语言中,一个函数体内不能定义另一个函数,函数的定义必须放在函数体的外边,即不能嵌套定义,但可以嵌套调用。 n main函数不允许被其他函数调用,c程序执行的过程总是从主函数开始到主函数结束,并且只能有且只有一个主函数main。 Ø 8.2函数定义的一般形式 n 类型说明符 函数名( 类型说明符 形式参数列表) { 函数体 } n 如果定义没有返回值的函数,函数名前的类型说明符使用void关键字。 n 如果定义没有参数的函数,函数名后的括号留空或使用void关键字。 n 如果定义空函数,函数体部分留空。 n 函数体中,声明语句要放在执行语句之前。 Ø 8.3函数的参数和函数的值 n 8.3.1形参和实参 u ①形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 u ②实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 u ③实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。 u ④函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 n 8.3.2函数返回值 u ①函数的值只能通过return语句返回主调函数。 return 语句的一般形式为: return 表达式; 或者为: return (表达式); u ②应在函数定义的时候指定函数值类型。若不指定,系统默认为int型。 u ③定义函数时,函数值的类型应和函数定义中return语句中表达式类型一致。如果两者不一致,则以函数类型为准,自动进行类型转换。 u ④不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void” Ø 8.4函数的调用 n 8.4.1函数调用的一般形式: 函数名(实参表) n 8.4.2函数调用的方式: u ①函数表达式:z = max( x , y ) u ②函数语句:max( x , y ); u ③函数实参:printf( “%d” , max( x , y ) ); n 8.4.3函数的声明和函数原型 u 一般形式:类型说明符 函数名( 类型说明符 形式参数列表); 或 :类型说明符 函数名( 类型说明符); u 以下情况省略函数声明: ①返回值是整形或字符型的函数。 ②函数的定义出现在主调函数之前。 ③在函数外预先说明了各个函数的类型(包括库函数)。 Ø 8.5函数嵌套调用 n 函数1中调用函数2,函数2中调用函数3,就构成了函数的嵌套调用,c语言允许嵌套调用。 Ø 8.6函数递归嗲用 n 函数在它的函数体内调用它自身,称为递归调用。 Ø 8.7数组作为函数的参数 n 数组元素作为函数参数:数组元素等同于普通变量,作为函数实际参数时,值是单向传递的。 n 数组名作为函数参数:数组名为数组的地址,和指针变量类似,传递的是地址值。 Ø 8.8局部变量和全局变量 n 8.8.1局部变量 u 局部变量也称为内部变量。局部变量是在函数内作定义说明的,其作用域仅限于函数内。 u 形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。 u 允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。 u 在复合语句中也可定义变量,其作用域只在复合语句范围内。 n 8.8.2全局变量 u 全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。 u 如果同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作用。 Ø 8.9变量的存储类别 n 变量的存储类别分为静态存储和动态存储。 n auto自动变量register寄存器变量static为静态变量,变量默认为auto类型。 n 静态变量在整个程序运行期间均有效,只在编译时复一次初值,如果没有赋初值,则自动赋0值。 n 使用extern声明外部变量。 第九章 预处理命令 Ø 9.1 概述 n 预处理命令以“#”开头,不属于c语言语句。 Ø 9.2 宏定义 n 9.2.1 无参宏定义 u 一般形式: #define 宏名 字符串 u 作用类似于文本替换,使用宏名表示字符串,若出现在双引号内的宏名则不替换。 u 宏定义不是说明或语句,行尾不加分号。 u 宏定义必须写在函数之外,允许嵌套使用。 u 习惯上宏名使用大写字母表示,以便于和变量区别。 n 9.2.2带参宏定义 u 一般形式: #define 宏名(形参表) 字符串 u 宏名和形参表之间不能有空格。 u 形参是不分配内存单元的,所以形参不必指定数据类型,本质上区别于函数。 u 字符串中的形参通常需要使用括号以避免出错。 n 9.3 文件包含 u 一般形式: #include “文件名” 或 #include <文件名> u 区别:<>在系统头文件目录查找文件,” ”则到源程序目录查找文件。 n 9.4条件编译 u ⑴第一种形式: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。本格式中的#else可以没有。 u ⑵第二种形式: #ifndef 标识符 程序段1 #else 程序段2 #endif 与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。这与第一种形式的功能正相反。 u ⑶第三种形式: #if 常量表达式 程序段1 #else 程序段2 #endif 它的功能是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。 第十章 指针 Ø 10.1地址指针的概念 n 内存中每个存储单元都是有编号(或称为地址),通常也称为指针。 n c语言中允许用一个变量存放指针,这种变量称为指针变量。 Ø 10.2变量的指针和指向变量的指针变量 n 10.2.1定义一个指针变量 u 一般形式:类型说明符 * 变量名; u 一个指针变量只能指向同类型的变量。 n 10.2.2指针变量的引用 u &:取地址运算符。*:指针运算符(间址运算符) u ①初始化给指针变量赋值 int a; int * p = &a; u ②给指针变量赋值 int a, *p; p = &a; n 10.2.3指针变量作为函数的参数 u 指针变量作为函数的参数,传递的是地址值。 u 指针变量作为函数的实参时,函数不会改变实参的值,但是可能会改变实参指针所指向地址里的值。 Ø 10.3数组指针和指向数组的指针变量 n 10.3.1指向数组元素的指针 u 数组名代表的是数组的首地址,是一个指针常量,其值不可以改变。 u int a[10]; a等价于&a[0]。 n 10.3.2通过指针引用数组的元素 若有int a[10], * p; p = a; u p+i和a+i都是a[i]的地址值。 u *(p+i)和*(a+i)都是引用a[i]这个元素。 u p[i]和*p(p+i)等价,和a[i]、*(a+i)等价。 n 10.3.3数组名作为函数参数:等同于指针作为函数的参数。 Ø 10.4字符串指针和指向字符串的指针变量 n 10.4.1字符串的表示形式 u 用字符数组存放一个字符串 :char st[] =”abcdef”; u 使用一个字符指针指向一个字符串:char *st = “abcdef”; Ø 10.5函数指针变量 Ø 10.6指针型函数 Ø 10.7指针数组和指向指针的指针 第十一章 结构体和共用体 Ø 11.1类型定义符typedef n 一般形式:typedef 原类型名 新类型名 n 方法:①定义普通变量的方式定义变量②把变量的名字替换成新类型名③最左边加typedef④可以使用新类型说明符来定义该类型的变量 Ø 11.2结构体类型 n 11.2.1结构体定义的一般形式: struct 结构名 { 成员表列 } n 11.2.2结构类型的变量声明方法 ①先定义结构再说明结构变量 ②定义结构类型的同时说明结构变量 ③直接说明结构变量 ④使用typedef说明一个结构体类型名,使用类型名来定义变量。 n 11.2.3结构体成员的表示方法:结构变量名.成员名 n 11.2.4结构变量的赋值 u 可以直接给结构成员赋值。 u 可以使用结构变量整体给其他结构变量赋值。 n 11.2.5结构变量初始化:在定义结构变量的时候给结构变量赋值,将各个成员的值按顺序放在{ }中。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言知识要点.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/7654956.html