C言语各章节干货汇总、考研常识点归纳_c言语考研考点总结-CSDN博客(c语言第6章)

目录
一 : 次序程序方案

??1:数据两种体现方法及其运算

?????1.1常量

?????1.2变量

?????1.3整型数据

?????1.4字符型数据

?????1.5浮点型数据

C言语各章节干货汇总、考研常识点归纳_c言语考研考点总结-CSDN博客(c语言第6章)插图

?????1.6运算符和表达式

?????1.7强行运算符

??2:c语句

?????2.1赋值表达式

?????2.2的差异

?????2.3格局字符

?????2.4scanf函数运用应留心的疑问

?????2.5字符数据输入输出

二 : 选择程序方案

?? 3.1 : 选择规划和条件判别

?? 3.2 : 逻辑型变量

?? 3.3 : 条件运算符和条件表达式

?? 3.4 : 选择规划嵌套

?? 3.5 : 用switch语句完成多分支选择规划

三 : 循环规划程序方案

?? 4.1 : while循环与do while循环

?? 4.2 : 用for语句完成循环

?? 4.3 : 几种循环的比照

?? 4.4 : break和continue

四数组批量处置数据

?? 5.1界说引证一维数组

?? 5.2 一维数组初始化

?? 5.3界说和引证二维数组

?? 5.4二维数组初始化

?? 5.5字符数组及初始化

?? 5.6字符串和字符串结束标志

?? 5.7字符数组的输入输出

?? 5.8运用字符串处置函数

五 函数完成模块化程序方案

?? 6.1为啥要用函数

?? 6.2界说函数

?? 6.3调用函数

?? 6.4函数调用数据传递

?? 6.5函数回来值

?? 6.6对被调用函数的声明和函数原型

?? 6.7函数的调用

?? 6.8数组作为函数参数

?? 6.9部分变量和全局变量

?? 6.10变量的存储方法和生计期

?? 6.11存储品种小结

六 指针

?? 7.1

?? 7.2指针变量

?? 7.3如何引证指针变量

?? 7.4经过指针引证一维数组

?? 7.5经过指针引证多维数组

?? 7.6指向多维数组元素的指针变量

?? 7.7指向函数的指针

?? 7.8指针数组

?? 7.9动态内存分配与指向它的指针变量


一个来自2021级考研狗关于c言语所学的收拾然后今后也许还能用吧。
激烈举荐c学习书本 注本c言语大有些总结来自于本书。

c对许多刚入门的同学来说也算是基础课 入门学习c要有以下几步 1.了解c的各个模块选择、循环、判别。 2不要觉得自个看过就会当然这也是对自个基础查验的一个进程。 3.基础往后你就会发现自个c小有所成。 4.c要点难点是指针感触很简略。

留心所以我会把我认为干的东西总结下来。

nextpart let’s begin !


1:数据两种体现方法及其运算

1.1常量

1.整形常量 2 实型常量小数、指数

指数字母e或e标明以10为底的指数。e或e之前有必要稀有字且e或e后边有必要为整数。不能写成 e666 或许 3e55.5

3 字符常量一般字符和转义字符

不包括单撇号。内存中以ascii代码存储。 97 ~ 122 其间h代表一个十六进制数字)

十进制转二进制、十进制转8进制、十进制转十六进制 :1434 , 小数有些 0.7031258 0.6258 得到成果十进制796.703125变换8进制为1434.55。

二进制与8进制所以 二进制数110110.111变换为8进制为66.7 。而8进制变换二进制即为二进制变换8进制的逆推。

二进制与十六进制将二进制11101001.1011变换为十六进制为e9.b 。 留心8进制和十六进制不能直接变换之后变换到十六进制或8进制

4 字符串常量 : 双撇号将若干字符括起来

留心 字符串常量和前面字符常量的差异

5 符号常量

指定一个符号代表一个常量。 故不能对符号常量赋以新值。 能做到 “ 一改全改 ”。 留心 符号常量和变量差异可赋新值。

1.2变量

1.变量

后运用。界说时指定变量名字和类型。 从该存储单元中读取数据。

2.常变量

留心 且不分配存储单元。

3.标识符

c言语规则且c言语差异巨细写。

1.3整形数据

1.根柢整形(int 型)

再加1。 存储方法与int相同。 标明它是长整型。

1如signed int a 和 int a 等价。 2无符号位。 3)unsigned 类型取值规模 即 无符号整形不能取负。 4)只需整型实型数据不能加。 5)关于无符号整形数据 “ %u”格局输出%u标明用无符号十进制数。

1.4字符型数据

字符与字符代码

1字符是依照其ascii码方法存储的。 2的根柢集包括了127个字符。 3 4

字符 ‘1’ 代表一个形状为‘1’ 的符号占2个或4个字节。

字符变量

    “ %c ” 格局输出字符 回车也会当作一个字符存储在缓冲区中。 2)有符号整形溢出循环% 256 – 128

1.5字符型数据

(1) float : 占4个字节就标明为float型常量。且双精度型变量值要用格局符%f标明。 (2) double : 占8个字节就标明为long double型。 且双精度型变量值要用格局符%lf标明。 (3) c编译体系把浮点型常量都按双精度处置分配8个字节。

1.6运算符和表达式

两个整数相除成果是整数。 成果也是整数。 使指针指向下一地址。且自增自减后原值跟着改动。

留心自增自减的运用之后自减1 。

赋值运算符联系方向“自右向左”。 先将字符变换成ascii码之后与整形进行运算。

1.7强行运算符

(1) 强行类型变换运算符y 的值变换成int型 (2)强行类型变换时正本变量的数据的类型没有发生改变。 (3) 强行类型变换符优先级高于%运算。 (4) 优先级 赋值运算符。

2:c语句

2.1赋值表达式

(1) 一般方法变量 赋值运算符 表达式 (2) 赋值运算符左面大约是一个可批改的左值所以但凡左值都可以作为右值。 (3)浮点型数据之后赋予整型变量。 (4)float型数据赋给double变量时有用位拓宽到15位。 (5) 堵截只将其低字节原封不动送到被赋值变量。 (6)实型数据之间以及整型数据与实型数据之间的赋值是先变换后赋值。 (7) 赋值表达式的作用1. 赋值 2.判别

2.2 #include运用双引号和<>的差异

(1) #include< … >称为标准方法因而要包括体系供给的相应头文件。 (2) #include (3)运用双引号找不到再按表专访时查找。

2.3格局字符

(1) d 格局符用来输出一个有符号的十进制数。

格局控制 输出 12 , 12前面有3个空格。

(2) c格局符同上。 (3) s格局符: 输出一个字符串。 (4) f格局符小数输出

指定数据宽度和小数位数留心小数点占一位。 例如15个3。 %-m.nf右端补空格。 留心

(5) e格局符%e指定以指数方法输出实数 (6) o格局符因而输出的数值不带符号。 (7) x格局符以十六进制数方法输出整数 (8) u格局符以十进制方法输出。

2.4 scanf函数运用应留心的疑问

格局控制后边跟的是地址代表取地址。 否则会犯错。

例1,2

输入数值时体系遇到非数值符号就认为第一个数据输入结束。 例如后边字符未读入。 输入字符时两个字符之间不需要刺进空格或其他分隔符

2.5 字符数据输入输出

(1) putchar 而不能输出整数。

putchar(’\n’); 输出一个换行符。 putchar(’\101’); 输出字符a putchar(’’); 输出单撇号字符。

(2) getchar输入一个字符。

getchar函数只能接收一个字符将回车作为一个字符。 getchar函数得到的字符可以赋给一个字符变量或整型变量 也可以作为表达式的一有些。putchar(getchar()); 即将接收到的字符直接输出。

二:选择规划方案

3.1 : 选择规划和条件判别

(1) 两种选择规划 (2) 复合语句大约用花括号括起来。 (3) 判另外成果是一个逻辑值。 (4) 联络运算符将两个数值或数值表达式联接起来的式子称联络表达式。 (5) 联络表达式的值是一个逻辑值即“真” 或 “假” 。 (6) && 逻辑与 (二者均为真 (7) 标明逻辑运算成果时 以 0 代表“假” 。 (8就不必区别c。 (9) a || b || c 。只需a为真才区别b。a 和 b都为假才区别c。

3.2 : 逻辑型变量

用bool来界说 false代表0。

3.3 : 条件运算符和条件表达式

(1) 三目运算符表达式1不存在回来表达式3 。 (2) 条件运算符

3.4 : 选择规划嵌套

(1)应当留心else老是与迩来的未配对的 if 配对。 (2)if{ … } else{ … } 算一个语句。

3.5 : 用switch语句完成多分支选择规划

(1)在每个case后边的语句中则多个case标号可以共用一组实施语句。 (2) switch后边括号内的“表达式” (3) switch下面的花括号内是一个复合语句语句体内包括若干条case最初的语句和最多一个default最初的行。 (4) 可以没有default标号流程转去实施default后边语句。 (5) 各个case标号呈现次序不影响实施成果且每个case常量有必要互纷歧样。 (6) case语句中尽管包括一个以上实施语句加上也可以。 (7)领会switch的妙用 输入某天的年月日使用下面的规划体。 typedef struct data{ int year ; int month ; int day ; }data; int main() { ????int num ????data data ????num ????if( 0) ???{ ????????if( data.month > 2)??printf(“data is %d”,num ????????else??printf(“data is %d”,num ???} ????else??printf(“data is %d”,num } int calculate(data data){ ????int num ????switch(data.month – 1) ????{ ????????case 11: num ????????case 10: num ????????case 9: num ????????case 8: num ????????case 7: num ????????case 6: num ????????case 5: num ????????case 4: num ????????case 3: num ????????case 2: num ????????case 1: num ????} ????return num; } 注即讲下面的每个月的日子都会加在一块。

三 : 循环规划程序方案

4.1 : while循环与do while循环

while和do while相同点与不一样点

相同点表达式为真就实施循环语句。 不一样点再进行判别循环条件。

一般不晓得循环次数的情况下比照便利

4.2 : 用for语句完成循环

(1) for循环不只可用于循环次数现已断定的情况也可用于不断定的情况 (2) for(表达式1 循环变量增值) 语句 (3) for循环变换为while循环 for 语句 表达式1 while ??{ ????语句 ????表达式3 ??} (4)表达式2可省掉无休止实施下去。 (5)表达式1和表达式3也可省掉犯错。 (6) 表达式1和表达式3可所以一个简略的表达式 (7)循环体中逗号表达式依照自左向右次序求解整个逗号表达式的值为最右边的表达式的值。 (8)表达式2可所以联络表达式就实施循环体。

4.3 : 几种循环的比照

(1) 一般情况下三种循环可彼此替代。 (2) 但凡while循环能结束的用for都能完成。 (3) while循环、do…while循环和for循环用continue结束本次循环。

4.4 : break语句和continue语句

(1) break语句不再判别循环条件是不是树立。

break语句只能用于循环语句和switch语句之中

(2) continue语句之后判别循环条件)。 (3) 两层循环实施时会提前中止内循环。

四数组批量处置数据

5.1界说和引证一维数组

数组中每一个元素都归于同一个数据类型。 数组下标是从0初步的。 不能对数组的巨细做动态的界说。

1不能一次全体调用整个数组悉数元素的值。 2)数组下标可所以整型常量或整型表达式。

5.2一维数组初始化

可给一有些元素元素赋值、也可只给数组中一有些元素赋值。 可不指定数组长度。 则方括号中的数组长度不能省掉。 界说数值型数组时

5.3界说和引证二维数组

二维数组可以了解成n个一维数组因为c言语中二维数组中元素摆放的次序是按行存放的。 成堆方括号内不可以以写两个下标。 区别界说数组时的a[3][4]和引证元素时a[3][4]的差异。前者时界说数组的维数和各维的巨细后者中的3、4是数组元素的下标值

5.4二维数组的初始化

int a[3][4] int a[3][4] int a[3][4] —对有些元素初值其他元素值主动为0. 对悉数元素赋初值因为体系要根据第2位维长度算出第1维的长度。 应分行赋初值。

5.5 字符数组

字符串是存放在字符型数组中的。 因而也可以用整型数组来存放字符型数据。 ’ \0 ’ )。 在界说时可以省掉数组长度。

5.6 字符串和字符串结束标志

字符串作为字符数组来处置的。 数组长度大于最长的字符串长度。 char c[] 留心而是11.因为字符串常量最终由体系加上了一个’\0’

5.7 字符数组的输入输出

用格局符“%c”输入或输出一个字符。 用格局符“%s”。 scanf可输入一个字符串: scanf(这儿的c是数组名或许指针。

5.8 运用字符串处置函数

结束。 。 而不大关怀其函数值。 不能写成。 成果放在字符数组1中。 strcpy(字符数组1

strcpy也可所以一个字符串常量。

不能将一个字符串常量或字符数组直接给一个字符数组赋值语句只能将一个字符给一个字符型变量或字符数组元素。 将字符串2中前不免n个字符仿制到字符数组1中去。 strcmp(字符串1字符串2)

字符串1 > 字符串2回来一个正整数。 字符串1 < 字符串2回来一个负整数。 字符串1 回来函数值0。

strlwr函数——变换小写字母 strupr函数——变换为大写的函数 #include<string.h>

五数组批量处置数据

6.1 为啥要用函数

1晓得它们市函数而不是变量或许其他目标。 2。

1主调函数不向被调用函数传递数据。无参函数一般用来实施指定的一组操作。 2此时有参函数应界说为与回来值相同的类型。

6.2 界说函数

1以便今后按名调用。 2即函数回来值的类型。 3以便在调用函数时向它们传递数据。 4即功用。

函数体包括声明有些和语句有些。 即指定函数带回来的值的类型。 声明有些包括对函数顶用到的变量进行界说以及对要调用的函数进行声明。 回来值类型与函数类型应是相同的。

6.3 调用函数

只需要函数结束 必定的操作。 这时需求函数待会一个断定的值参加表达式的运算。 函数调用作为另一个函数调用时的实参。 函数调用本身是不必有分号的。printf( 这儿的max(a,b)后边多了一个分号。

6.4 函数调用数据传递

实参可所以常量、变量或表达式。 常称为“真假结豪淠留心实参加形参的类型应相同或赋值兼容 函数max的形参被暂时分配内存单元。 经过return语句将函数值带回到主调函数。应当留心回来值的类型与函数类型共同。 则不需要return语句。这时函数的类型大约好义为void类型。 形参单元被开释。 实参向形参的数据传递是“值传递”而不能由形参传给实参。

6.5 函数回来值

哪个起作用。return语句后边括号可加可不加。如return z 和 return 等价return后边可所以一个表达式。 在界说函数时指定类型。 界说函数时指定的函数类型一般大约和return语句中的表达式类型共同。 则以函数类型为准。即函数类型抉择回来值类型。 此时函数中不得呈现return语句。

6.6 对被调用函数的声明和函数原型

而只写形参的类型。 编译体系只关怀和查看参数个数和参数类型而不查看参数名. 这儿要留心指向的不是同一个地址。

1它是一个无缺的、独立的函数单位。 2以便在调用该函数时体系按此进行对照查看,不包括函数题。

6.7 函数的调用

嵌套调用

留心不能嵌套界说但可以嵌套调用函数。

递归调用

调用一个函数的进程中又呈现直接或直接调用该函数本身称为函数的递归调用。

6.8 数组作为函数参数

数组元素作函数参数

1实参可所以常量、变量、表达式。所以 数组元素可以作为函数实参。 2单向传递。

(2)数组名作函数参数

1传递的是数组首元素的地址。 2实参、形参数组类型大约共同。 3所以形参数组元素值改动则实参数组值也改动。 4但二维以及其他高维的巨细阐明不可以省掉。

6.9 数组作为函数参数

部分变量

1 2函数内部界说的变量只在本函数规模内有用函数外无法调用。 3复合语句内界说的变量只在本复合语句内有用复合语句以外不能运用这些变量 4方法参数也是部分变量。

全局变量

1函数外界说的变质变满足局变量(也称全程变量)。 2作用规模是从界说变量的方位到这篇文章件的结束。

部分变量和全局变量同名

在部分变量的作用规模内即全局变量不起作用。

6.10 变量的存储方法和生计期

全局变量和部分变量。 静态存储方法和动态存储方法。

1静态存储方法是指在程序运转时刻由体系分配固定的存储空间的方法 2全局变量悉数存放在静态存储区中占固定存储单元。 3动态存储方法是指在程序运转时刻根据需要进行为态的分配空间的方法。 4函数方法参数即主动变量、函数调用时现场维护和回来地址等这种分配和开释是动态的。

1归于动态存储方法。 2即只在赋初值一次即可。 3归于部分变量。 4所以可以不指定类型。 5在另一文件顶用extern对num做“外部变量声明”。 6再找不到则报错。

1其所分配的空间一向存在。 2。

留心而不能单独运用。

6.10 变量的存储方法和生计期

部分变量和全局变量

1

主动变量。 静态部分变量。 存放器变量。

2

静态外部变量 外部变量

动态存储和静态存储

1

主动变量 存放器变量 方法参数

2静态存储

静态部分变量 静态外部变量 外部变量

内存中静态存储区和内存中动态存储区、cpu中的存放器

内存中的静态存储区

静态部分变量 静态外部变量 外部变量 内存中动态存储区主动变量和方法参数 cpu中的存放器存放器变量

树立在存储空间的声明称界说而把不需要树立存储空间的声明称为声明。

区别内部函数和外部函数

根据函数能否被其他源文件调用将函数分为内部函数和外部函数。

六 指针

7.1 指针是啥

。 也称地址指向该单元。即指向就是经过地址来体现的。

变量名和变量的地址逐个对应。 然后对它进行存取造访。

一个变量的地址称为该变量的“指针”。 存放的值是变量 i 的地址2000。

指针变量存放地址的变量。 指针是一个地址。 int* p ;p 这段代码是差错的所以不能彼此赋值。

7.2 指针变量

第四行的pointer_1和pointer_2和倒数第三行printf函数中的pointer_1和pointer_2有啥差异

1这儿的‘ * ’ 只是声明界说的是指针变量。 2这儿的‘ * ’ 是指向的意思。 3写成*pointer_1 是不对的。 假定加了‘ * ’号就代表了指向而不加 ‘ * ’号的时分pointer_1,pointer_2代表的是指针变量* 4因为体系无法分辩这个整数是地址仍是整型变量。

要指定基类型 。

1才干按存储单元的长度以及数据的存储方法正确地取出该数据。 2忽而指向一个实型变量。 *!!留心pointer_2是啥意思pointer_1,pointer_2是指向整型数据的指针变量。

指向整型数据的指针类型标明为” int * “,读作 ”指向int的指针“或简称”int指针“。

7.3 如何引证指针变量

a是变量a的地址。 *p代表指针变量p指向的目标。 由成果可知而正本a,b的值并没有改变。

1 要留心的是和例相反。 2为啥可以将p1直接赋给temp变量 p1是指针变量而号的意思标明指向

7.4 经过指针引证一维数组

数组元素的指针即数组元素的地址。 即序号为0的地址。int *p 等价于p 也可自增、自减 。 image/watermark,type_zmfuz3pozw5nagvpdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzm2nju3nzg4,size_16,color_ffffff,t_70″ alt=”在这儿刺进图像描绘” />

int a[10] ; for(a ; a < (a 因为a是数组第一个元素的地址

简答题

前已介绍 fun( int arr[] , int n) 等价于fun( int * arr , int n)

1形参和实参都用数组名 2形参用指针变量。 3实参形参都用指针变量 4形参为数组名

7.5 经过指针引证二维数组

学习二维数组指针必定要将二维数组当作多个一维数组构成。 a[1]标明1行的首地址。 image/watermark,type_zmfuz3pozw5nagvpdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzm2nju3nzg4,size_16,color_ffffff,t_70″ alt=”在这儿刺进图像描绘” /> ![在这儿刺进图像描绘](https://img-blog.csdnimg.cn/20210204155019336.png?x-oss-processimage/watermark,type_zmfuz3pozw5nagvpdgk,shadow_10,text_ahr0chm6ly9ibg9nlmnzzg4ubmv0l3fxxzm2nju3nzg4,size_16,color_ffffff,t_70

7.6 指向多维数组元素的指针变量

int (*p)[4] 标明界说p为一个指针变量它指向包括4个整形元素的一维数组。留心 p 两边的括号不可以短少假定写成p[4]*p[4]就是指针数组。

一维数组名可以作为函数参数 1)用指向变量的指针变量 2)用指向一维数组的指针变量

7.7 指向函数的指针

称为这个函数的指针。 的意义

界说p是一个指向函数的指针变量它可以指向函数的类型为整型且有两个整型参数的函数。p的类型用int(*)(int , int )标明。

界说和运用指向函数的指针变量

1(函数参数列表) 2

1 假定要用指针调用函数(只给出函数名不必给出参数) 2 用函数指针变量调用函数时

7.8 指针数组

称为指针数组。 i 就是指向指针型数据的指针。

7.9 动态内存分配与指向它的指针变量

这个存储区是一个称为栈的区域。 称为堆区。

作用在内存的动态存储区平分配一个长度为size的接连空间。

void * calloc(unsigned n , unsigned size )

作用回来null.

void free(void *p)

作用无回来值。

作用可以用realloc函数从头分配。

Related Posts

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

|京ICP备18012533号-378