C语言程序设计复习知识总结 孙亚飞

更新时间:2024-05-12 12:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计复习知识总结 孙亚飞

第一章 软件工程概述及程序设计基础

1、“冯-诺依曼”计算机 “存储程序原理”

一条计算机指令完成一个基本操作 : 操作码+操作数 软件:程序(一组精心编排的指令)+数据+文档 2、软件工程: 问题定义 可行性研究 需求分析 总体设计 详细设计 编码 测试

编码: 编辑→(源程序.c)→ 编译→ (目标程序,二进制代码.obj) → 连接→(可执行程序.exe) →测试运行 3、程序设计语言

机器语言(二进制代码) 汇编(符号语言) (C C++ C# JAVA) 4、程序设计方法(思想)

面向过程的结构化程序设计方法 :“自顶向下,逐步求精” 三种基本结构:顺序 选择 循环 程序=算法+数据结构

算法特征:确定性 有穷性 一个或多个输出 零个或多个输入 有效性 面向对象的程序设计方法: 对象 属性 方法 类 5、常用算法

累加 累乘 求最大值或最小值 求两数的最小公倍数或最大公约数(辗转相除法) 交换两个数 查找

符号化 高级语言

第二章 C语言概述

1、程序基本单位:函数

2、标识符:变量名、函数名、标号

只能由字母(大小写敏感)、数字、下划线组成,且第一个字符只能为字母或下划线

第三章 数据类型及表达式

1、标示符:字母、数字或下划线组成,对大小写敏感,且第一个字母只能为字母或下划线,不能使用关键字作为标示符。

32个关键字:Auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

2、数据类型:char int float double 字节: 1 2 4 8

整型数据:?八进制:由数字0开头?十六进制:由数字0和字母x开头 int short :2 long :4

浮点型数据:?十进制小数形式:必须包含小数点和数字 如 .314,0. ?指数形式:e(或E)前必须有数字,e之后的指数必须为整数 如 1E-3 0E0

float(4B,有效位6~7)double(8B,有效位15~16) 默认为double类型 字符型数据:字符常量用单引号括起来表示

转义字符: \\n换行 \\b退格 \\t水平制表,即横向跳格

\\’单引号 \\ddd 1-3位八进制数代表的字符 \\xhh 1-2位十六进制数代表的字符

\\f 换页 \\r 回车 \\v垂直制表 \\”双引号 \\0空 ,表示字符串常量的结束

字符也可用反斜线加八或十六进制ASCII码表示,如‘\\101’同‘A’ 字符串常量 双引号

3、/:除法运算,如5/3,整数相除为整数,小数部分舍去

%求余 只能用于整数相除求余,结果符号和被除数相同 -5%3 //-2 4、强制类型转换

(类型名)(表达式) 如:a=(double)10

第四章 语句及程序流程控制

1、结构化程序设计三种基本结构:顺序、选择、循环 2、基本输入输出函数:putchar getchar printf scanf

字符输出函数 putchar(c); //c为字符型或整型的常量或变量,只能一个 字符输入函数 getchar(); //括号内不能有内容,输入的字符不能带单引号 格式输出函数 printf(格式控制,输出表);

//格式控制为用双引号括起来的格式控制转换字符串,有三种形式?格式说明:由“%”后跟格式字符组成。

格式字符 d o x u c s f e g

常用形式 %[-][0]带符号十进制输出整数 [m][1]d 无符号八进制整数(不输出前导符0) %o 无符号十六进制整数(不输出前导符0x) %x 无符号十进制 %u 字符形式输出一个字符 %[m]c %[-][m]输出字符串 [.n]s %[-][0]以小数点形式输出单、双精度实数,隐含输出6位小数 [m][.n]f %[-][m]标准指数形式输出单、双精度实数,数字部分为6位小数 [.n]e 选f或e中宽度较小的输出实数,不输出无意义0 %g 说明

附加格式说明字符 说明 — 左对齐 0(数字) 输出空位用0填充 m(一个正整数) 输出数据字段宽度,if实际位数大于m,按实际;小于m,补0或空格 .n(一个正整数) 实数,表示输出n位小数;字符串,表示截取字符个数 l(字母) 输出长整形整数 如果想输出字符“%”,应在“格式控制中”用连续两个“%”表示 格式输入函数 scanf(格式控制,地址表)

//格式控制同printf,地址表由地址组成,&为取地址运算符 格式字符不用u,附加格式说明字符常用形式%[*][m][l]格式字符 *表示本输入项在输入后不赋给相应的变量,即跳过它对应的数据 3、条件表达式

表达式1?表达式2:表达式3 4、多分支选择语句 switch(表达式) {

case 常量表达式1:语句1; ........

case 常量表达式n:语句n; default:语句n+1; }

break 加在必要的case分支语句后,可跳出switch结构;用在循环体中,可立即终止所在循环

多case执行相同语句,前面相同语句可省,不加分号,但不能合写为一行 5、循环结构:while do....while for

break; //只能用于switch和循环语句,对于多重循环,只能退出包含该语句的那一层结构

continue;//终止本次执行,继续下一次循环

第五章 数组

1、C语言的数据类型分为基本数据类型(字符型、整型、实型)、构造数据类型(数组类型、结构体类型、公用体类型)、指针类型和空类型。 2、一维数组

类型名 数组名 [数组长度]

存放字符串的字符数组可简写,如 char str[6]=”hello” 注意:字符串结束标志‘\\0’也是一个元素 例:int a[10];//a+i就表示a[i]的地址&a[i] 3、二维数组中a[i][j]地址的表示:

&a[i][j] a[i]+j &a[0][0]+4*i+j a[0]+4*i+j //设一行中有4个元素 4、字符数组初始化时,如果初始化表达式少于数组宽度,剩余位自动置为空字符,即是字符串的结束标志。 5、字符串的输入输出

printf scanf gets puts getchar putchar gets和puts只有一个参数,就是一个内存地址 6、标准字符串处理函数 #include

(1)strlen(s) 统计字符串s中字符的个数(不含终止符‘\\0’),返回字符串s 的

长度

(2)strcpy(s1,s2) 把字符串s2中的内容拷贝到字符串s1 中去,返回s1 strncpy(s1,s2,n) 把s2中前n个字符拷贝到s1中,返回s1 注:不会自动拷入字符串结束标志,需手动给s1放置字符串结束标志

(3)strcat(s1,s2) 把s2 的内容连接到s1后,s1成为一个新串,返回s1

strncat(s1,s2) 把s2中前n个字符内容连接到s1后,返回s1,如果n超过s2 实际长度,以实际长度为准

(4)strcmp(s1,s2) 比较s1和s2的大小,返回:s1>s2,返回正数;s1=s2,返回0;s1

(5)mencmp(s1,s2,n) 比较s1和s2前n个字节,返回:s1>s2,返回正数;s1=s2,返回0;s1

注:如果两字符串相同且n大于字符串长度,memcmp会继续比较字符串结束标志后面的内存单元,直到不相等或达到次数n;而strcmp只要比到字符串结束标志就会结束。

(6)memcpy(s1,s2,n) 将s2中前n个字符拷贝到s1中,返回s1 menmove(s1,s2,n) 将s2中前n个字符拷贝到s1中,返回s1 区别如:char s[]=”hello,world”;

memmove(s+2,s,10); //结果为“hehello,worl” 考虑内存区域重叠问题 memcpy(s+2,s,10); // 结果为“hehehehehehe” s[12]=’\\0’;

(7)Memset(s,c,n) 把字符串s中前n个字节内容设置为c (8)strlwr(s) 把字符串s中大写字母转换为小写字母

strupr(s) 把字符串s中小写字母转换为大写字母 补充:sizeof(s)求数组s占用的空间字节数

第六章 函数

1、定义函数的变量注意:形参变量名不能重复,每个变量名必须单独定义;函数内定义的变量名不能与形参列表变量名重名;函数体内变量定义语句必须写在函数体开头部分 函数类型一般默认为int 型

2、形参:定义函数时 实参:调用函数时

实参 形参 主调函数 被调函数

返回值 Return语句: 函数终止执行,并且返回到调用此函数的语句 3、局部变量:在函数内定义的变量,其作用范围局限于此函数内部

全局变量:定义在任何函数之外的变量,作用范围是从定义处直到文件末尾 同名时,局部变量优先使用 4、C语言的变量有4种存储类别:

auto(自动变量) 只能在函数中定义,只有局部变量能定义

static(静态变量) 从被分配存储空开始,直到程序结束才被释放,局部和全局变量都可定义 如:static int c=3;

register(寄存器变量) 只允许局部变量和少量形参定义;地址不可访问;类型必须为int、char、和指针型。频繁使用的变量放在寄存器中可以提高程序的执行效率

extern(外部变量) 只能用于全局变量的声明。在全局变量定义处之前访问

该变量,可用extern声明,扩展全局变量的作用域。注:在多文件中使用外部变量时,要考虑该变量的值可能在其他文件中被修改

5、内部函数:一个函数只能在本文件中可见而不能被其他文件调用 static 类型标识符 函数名(形参表)

外部函数:可以被其他文件调用,extern可省。在需要调用外部函数的文件中,必须先使用extern关键字声明外部函数的原型

第七章 预处理命令

1、编译预处理命令:放在函数之外,以“#”开头并且末尾不加分号的命令 预处理:指在编译前所做的处理,由预处理程序负责完成

C提供多种预处理功能:如宏定义(#define)、文件包含(#include)、条件编译

2、“宏”:用一个标识符来表示一个字符串。被定义为“宏”的标识符称为“宏名” “宏代换”或“宏展开”:编译预处理时,所有宏名用字符串去代换,分为有参和无参两种

3、#undef M //终止宏M的作用域

宏定义不占用运行时间,只占用编译时间,而函数则占用运行时间 4、条件编译(3种)

#ifdef 标识符 #ifndef 标识符 #ifdef 常量表达式 程序段1 程序段1 程序段1 #else #else #else 程序段2 程序段2 程序段2 #endif #endif #endif

第八章 指针

1、存储器中的一个字节称为一个内存单元,内存单元的编号称为地址,通常把这个地址称为指针。存放地址的变量称为指针变量,一个指针变量的值就是某个内存单元的地址(指针)。

指针:一个变量的地址 指针变量:专门存放变量地址的变量

2、指针变量定义 类型说明符 *变量名 //*表示这是一个指针变量,类型说明符表示该指针变量所指向的变量的数据类型。 3、指针变量的赋值只能赋予地址。

& :地址运算符

* :指针运算符(或“间接访问运算符”),表示指针变量所指的变量,其后必须跟指针变量。 注:在指针变量说明中,*是类型说明符,表示其后的变量是指针类型;而表达式中出现的*则是一个运算符,表示指针变量所指的变量。 4、动态存储分配的几个相关函数

malloc(size)在内存的动态存储区中分配一个长度为size的连续存储空间,返回值是指针(指向字符),值是该分配区域的起始地址。如果此函数未能成功执行,则返回0。

calloc(n,size) 分配n个长度为size的连续空间,返回分配域的起始地址(指向字符)。

free(ptr) 释放由ptr指针变量(指向字符型的指针变量)指向的内存区域。 5、移动指针:指针变量加或减一个整数,功能:使指针变量指向相邻的存储单元

指针比较:两个指针指向同一个对象,可以进行<,<=,>,>=,==,!=等关系运算。 6、字符串常量是在内存中一段连续空间存放,字符串中每个字符占一个字节存放空间。

7、指针可以指向一个函数,一个函数在编译时被分配一个入口地址,这个地址就称为函数的指针。

指向函数的指针定义: 类型说明符(*指针变量名)(函数形参);//函数形参可省 如 char(*p)()

返回指针的函数定义 类型名 *函数名(参数表) 如char *m(a,b); 8、指针数组:若干指向同类对象的指针构成的数组 类型名 *数组名[数组长度] 如:float *p[10]

指向指针的指针:指针变量指向指针变量,其内容为某指针变量的地址 类型说明符 **指针变量名

第九章 结构体、公用体和枚举类型

1、结构体(struct)把不同类型的数据组织在一起并构造成一种新的数据类型 共用体(union)又称联合体,使几种不同类型的变量公用一段存储空间 枚举(enum)列举变量的取值范围,用此类型定义的变量只能取已列举的值 2、结构体类型定义

struct 结构体名 //结构体名可省 {类型名 结构体成员名1; ........

类型名 结构体成员名n; };

从关键字至右花括号之间的部分称为结构区分符,它是类型区分符的一种,用于指定结构的类型 结构体类型变量的定义

?单独定义 ?混合定义 ?使用typrdef定义

本文来源:https://www.bwwdw.com/article/bm3g.html

Top