460 likes | 607 Views
基本内容总结. 第一 ~ 第十章. 目录总览. 第一章 C 语言的基本知识 第二章 算法 第三章 数据类型、运算符与表达式 第四章 C 语言中的顺序结构程序设计 第五章 C 语言中的选择结构程序设计 第六章 C 语言中的循环结构程序设计 第七章 C 语言中的数组 第八章 C 语言中的函数 第九章 编译预处理 第十章 指针. 前三章 C 语言的基本知识. 一、 C 程序的基本形式及构成 二、 C 程序的执行过程 三、 C 语言中标识符的概念 四、 C 程序中的数据 五、运算符与表达式 六、语句
E N D
基本内容总结 第一 ~ 第十章
目录总览 • 第一章 C语言的基本知识 • 第二章 算法 • 第三章 数据类型、运算符与表达式 • 第四章 C语言中的顺序结构程序设计 • 第五章 C语言中的选择结构程序设计 • 第六章 C语言中的循环结构程序设计 • 第七章 C语言中的数组 • 第八章 C语言中的函数 • 第九章 编译预处理 • 第十章 指针
前三章 C语言的基本知识 • 一、C程序的基本形式及构成 • 二、C程序的执行过程 • 三、C语言中标识符的概念 • 四、C程序中的数据 • 五、运算符与表达式 • 六、语句 • 要求: • 1、掌握理解一 ~ 三。 • 2、熟练掌握C语言中的基本数据类型的定义、使用、运算和存储。 • 3、能正确地求表达式的值。 • 4、能正确地书写C语句。 第一章 C语言的基本知识
一、C程序的基本形式及构成 预处理 全局变量 函数声明 函数定义 …………函数的首部 main() { …… } 函数体 第一章 C语言的基本知识
二、C程序的执行过程 编辑 输入C语句 形成源文件(.C) 若有语法错误 编译 翻译成二进制代码, 形成目标文件(.OBJ) 连接 连接形成可执行文件(.EXE) 运行 若结果有误 第一章 C语言的基本知识
三、C语言中标识符的概念 • 1、什么是标识符 • 2、标识符的命名规则 第一章 C语言的基本知识
四、C程序中的数据 • 1、数据的表示形式(常量、变量) • 2、数据的类型(基本数据类型) • 整型: • 实型: • 字符型: • 定义、特点、赋值 第一章 C语言的基本知识
五、运算符与表达式 • 1、算术运算符和算术表达式 • 2、赋值运算符和赋值表达式 • 3、自反运算和自加、自减运算符及表达式 • 4、强制类型转换运算符和强制类型转换表达式(int)(4.5) • 5、关系运算符和关系表达式 • 6、逻辑运算符与逻辑表达式 • 7、逗号运算符和逗号表达式 • 8、条件运算符和条件表达式(问号运算符与问号表达式) • (运算规则、优先级、结合性、类型转换等) 第一章 C语言的基本知识
第四章 C语言顺序结构程序设计 • 一、数据的输出 • 二、数据的输入 • 数值数据:printf()和scanf() • 字符数据:printf()和scanf() putchar()和getchar() • 字符串: printf()和scanf() gets()和puts() • 要求:1、掌握库函数的使用 • 2、熟练掌握以上函数的使用格式 • 三、顺序结构程序设计(由上到下顺序执行) a=1;b=2; a=a+2; b=a+b; • (一个变量如果得到一个新的值,则原来的值丢失) 第二章 C语言顺序结构程序设计
第五章 C语言中的选择结构程序设计 • 一、 if语句 • 二、条件表达式 • 三、switch语句 • 使用格式、功能、适用条件、执行过程 • 选择结构主要用来实现: • 根据情况选择不同的操作 第二章 C语言顺序结构程序设计
条件 满足 不满足 图1 语句1 语句2 一、if语句 ①、 if(条件) 语句1; else 语句2; 第二章 C语言顺序结构程序设计
满足 条件 不满足 语句1 图2 一、if语句 ② 如果不满足时什么也不做,则可用如下格式: if(条件) 语句1; 第二章 C语言顺序结构程序设计
一、if语句 第二章 C语言顺序结构程序设计 ③ 嵌套格式(如果语句1或语句2是一条if语句,即if语句里面还有一条if语句的情况,称为if语句的嵌套格式)。 if(条件) if(条件) 语句1; else 语句2; else 语句3; if(条件) 语句1; else if(条件) 语句2; else 语句3; if(条件) if(条件) 语句1; else 语句2 else if(条件) 语句3; if(条件) if(条件); 语句1 else 语句2; 匹配规则: else总是与离它最近的那个还未匹配的if匹配。
二、条件表达式 max = a>b?a:b 等价于: if (a>b) max=a; else max=b; 第二章 C语言顺序结构程序设计
表达式的值 值1 值2 值3 …… 值n 语句1 语句2 语句3 …… 语句n 三、switch语句 • 1、使用格式 • switch(表达式) • {case 常量表达式1:语句1;break; • case 常量表达式2:语句2;break; • case 常量表达式3:语句3;break; • ………… • case 常量表达式n:语句n;break; • [default:语句n+1;] • } 第二章 C语言顺序结构程序设计
第六章 C语言中的循环结构程序设计 • 一、while语句 • 二、do-while语句 • 三、for语句 • 功能、使用格式、适用情况、执行过程 • 循环结构主要用来实现: • 如果一些操作重复执行多次的情况
一、while语句 • 1、使用格式 • while (循环条件)循环体语句 初始条件 表达式 0 非0 循环体语句 图4.1
二、do-while语句 • 使用格式: • do • 循环体语句 • while(循环条件); • 执行流程如图4.2所示。 初始条件 循环体语句 非0 表达式 0 图4.2
三、for语句 • 使用格式: • for(表达式1;表达式2;表达式3) • 循环体语句 初始条件 修正表达式 循环体语句 条件表达式 非0 0 图4.3
第七章 C语言中的数组 • 数组是什么? • 为什么要引入数组? • 数组的概念(名字、下标、元素、行、列、维数等) • 数组的定义 • 数组的赋值 • 数组元素的引用 • 数组的基本操作(输入、输出、插入、删除、排序、转置、加、减) • 注:一般都要用循环实现。一维数组用一重循环,二维数组用二重循环。 • 用字符数组实现的字符串是一个特例,可以使用循环来实现,也可以直接使用字符串函数来实现。
数组的定义、引用和操作 • 基类型 数组名[数组大小] • 如:int a[10]; 5 1、下标从0开始; 2、数组的初始化; 3、数组元素的赋值;a[4]=5; 4、数组元素的引用;printf(“%d”,a[4]); 5、数组基本操作的实现。
第八章 C语言中的函数 • 为什么要引入函数? • 函数是什么? • 函数的定义、声明和调用 • 变量的分类 • 函数的分类
一、函数的定义 • 函数的定义格式: • 返回值类型 函数名(形参列表) • { • …… • }
二、函数的声明 • 可以简单地照写以定义函数地首部,再加一个分号,就成了对函数的声明。
三、函数的调用 • 函数调用的一般形式: • 函数名(实参列表); • 例如求圆柱体体积的程序。 • 函数调用的方式: • 1、函数语句 • 把函数调用作为一个语句。如程序P6_1 • 2、函数表达式 • 函数出现在一个表达式中。如程序P6_2 • 3、函数参数 • 函数调用作为函数的实参。如程序P6_3 • 4、嵌套调用和递归调用
形式参数与实在参数参数值的传递 • 在C语言中,实参与形参是按值单向传递的。也称为“传值调用”。
数组作为函数参数 • 数组名可以作为函数参数。 • 数组名作为参数时,实际需要的是数组的起始地址和数据的个数n。对从这个起始地址开始的n个位置的数据进行处理。 • 对函数进行调用时,形参与实参共用一组地址空间。
数组作为函数参数 printarr(int b[],int n) {int i; printf(“\n”); for(i=0;i<n;i++) printf(“%5d”,b[i]); } printarr函数数据区 i 9 n b 2000 a[8] a[7] a[6] main函数数据区 main() {int a[9]={1,2,3,4,5,6,7,8,9}; printarr(a,9); } a[5] a[4] a[3] a[2] a[1]2002 a[0]2000
变量的分类 • 从变量的作用域的角度来分,可分为局部变量与全局变量; • 从变量值存在的时间来分,可分为动态存储方式与静态存储方式:
局部变量与全局变量 • 在函数内定义的变量是“局部变量”,也称“内部变量”。 • 在函数外定义的变量是“全局变量”,也称“外部变量”。 • 局部变量只能在定义它的函数中使用。 • 全局变量可以被本文件中的所有函数共用。 • 它的有效范围为从定义变量的位置到本文件的结束。 • 如: • int p=1,q=5;—————————————————— • float f1(int a)——— • {…… • }—————————— • char c;—————————————— • char f2(int x,inty)… • {…… • } • main() • {…… • }——————————————————————— 局部变量a的有效范围 全局变量p,q的有效范围 局部变量x,y的有效范围 全局变量c的有效范围
变量的存储类别 • 主要分两大类:静态存储和动态存储。 • 具体包含四小类: • 自动的(auto),静态的(static), • 寄存器的(register),外部的(extern)。 • 主要掌握不同类型的特点(那些变量各属于什么类型?什么时候分配存储空间?什么时候释放存储空间?不同类型的变量如何赋值?不同类型的变量的有效区域多大?)
内部函数与外部函数 • 内部函数: • 如果一个函数只能被本文件中的其他函数调用,称为内部函数。也叫静态函数。 • 内部函数的定义方式为: • static 函数类型 函数名(形参列表) • 这样定义的函数只局限于所在文件,其他文件不能使用。如果在不同的文件中有同名的内部函数,它们互补干扰。 • 在定义函数时前边加关键字extern,则该函数为外部函数,这样定义的函数不仅可以被本文件使用,还可以被其他文件使用。外部函数在定义时可以省略关键字extern。 • 其他文件调用外部函数时,需用extern加以说明
第九章 编译预处理 • 一、宏定义 • 二、文件包含 • 三、条件编译* • 要求:能正确地进行宏替换
第十章 指针 • 一、指针与指针变量 • 二、指针变量的定义 • 三、一维数组与指针 • 四、字符串与指针 • 五、二维数组与指针 • 六、指向数组的指针和指针数组 • 七、指针作为函数参数 • 八、返回值为指针的函数和指向函数的指针 • 九、指向指针的指针 • 十、指针运算
一、指针与指针变量 • 指针:地址 • 指针变量:存放指针(地址)的变量 • 指向:指针变量指向所存地址对应的变量。
二、指针变量的定义 • 定义格式: • 基类型 *变量名; • 如:int *p;
三、一维数组与指针 • 如果有以下定义: int a[10],*p; p=a; • 说出下列表示的含义: • a,p,&a[0], • &a[5],a+5,p+5, • a[7],*(a+7),*(p+7),p[7]; 或者:int a[10],*p=a;
四、字符串与指针 • 因为字符串一般存放到一维字符数组中,故指向字符串的指针可以看成是指向一维字符数组的指针 • 用指针指向一个字符串以后,可以用指针对字符串进行操作。 • 判断下列写法哪些正确,哪些错误? • char s[]=“china”; • char s[10]; s=“china”; • char s[10]; s[10]=“china”; • char *p=“china”; • char *p; p=“china”; • char s[10],*p; *p=“china”; • char s[10],*p=s; p=“china”;
a[0] a a[1] a+1 a[2] a+2 五、二维数组与指针 若有如下定义: int a[3][4], *p; p=&a[0][0]; p=a;
五、二维数组与指针 说出下列表示的含义:设&a[0][0]=2000 第0行首地址 2000 第0行第0列的地址 2000 第1行首地址 2008 第1行第0列的地址 2008 第1行第2列的地址 2012 第1行第2列的元素 思考:a与*a,a[1]与&a[1]的值相同,但他们有什么不同?
六、指向数组的指针和指针数组 • 如何令一个指针指向一行? • 定义 指向数组的指针变量: • 定义格式:类型 (*指针名)[个数] • 如:int (*p)[4]; • 若有定义int a[3][4],(*p)[4]; • 则可以p=a; • 如果一个数组的元素都是指针变量,则这个数组称为指针数组。 • 定义方式:类型 *p[数组大小]; • 例如:char *p[3]; • 定义了一个指针数组,包含三个指针元素。 • 注意与指向数组的指针变量的区别。 • 指针数组常用于处理多个字符串。
七、指针作为函数参数 1、当实参为数组名时,形参可以为数组,也可以为指针变量 2、当形参为数组时,实参可以为数组名,也可以为指针变量 3、实参与形参的数据类型必须一致。
八、返回值为指针的函数和指向函数的指针 • 当一个函数的返回值为地址时,称函数的返回值为指针,该函数成为指针型函数。 • 指针函数的定义如下: • 数据类型 *函数名(形参列表) • {…… • return(指针变量); • } • 函数名代表函数的首地址。 • 定义指向函数的指针: (*函数名)()
九、指向指针的指针 • 指向指针的指针 • 定义方式: • 类型 **指针变量名; • 例如:int **p, *q, I; • I=5; • q=&I; • p=&q; • printf(“%d”,**p); • }
不同类型的指针定义小结 • int I; 定义整型变量I • int *p; p为指向整型数据的指针变量 • int a[n]; 定义整型数组a,它有n个元素 • int *p[n]; 定义指针数组p,它由n个指向整型数据的指针数 • 据组成 • int (*p)[n]; p为指向含n个元素的一维数组的指针变量 • int f(); f为带回整型函数值的函数 • int *p(); p为带回一个指针的函数,该指针指向整型数据 • int (*p)(); p为指向函数的指针,该函数返回一个整型值 • int **p; p是一个指针变量,他指向一个指向整型数据的指 • 针变量
十、指针运算 • 关于*和& • *: • 1、定义时,表示后面的变量为指针变量; • 2、其他时,*只能与指针变量参加运算,表示后面的指针变量所指向的那个变量。 • &: • 取地址。 • 优先级: • *(&p)与&(*p) • *p++、*(p++)与(*p)++ (*与++级别同,自右向左结合)