导航菜单
首页 >  计算机考研初试考c语言的学校  > 考研[*C语言*]学习笔记汇总(全)

考研[*C语言*]学习笔记汇总(全)

文章目录:

A:学习视频 

B:考点范围

C:C语言学习教程

D:补充知识

E:题库

F:其他资源

 1.printf()和scanf()

1.1 printf()

1.2 scanf()

2.if 的常见问题解析

3.数组的常见问题解析

4.动态分配内存 

5.定义结构体struct

6.共用体union

7.枚举enum

8.return的用法

9.break和continue

10.指针数组和数组指针的内存布局

11.野指针

12.typedef与#define的区别

13.文件操作

14:位运算计算

15:字符串函数运用

16:函数

17:数组

18:指针

    

A:学习视频 

《郝斌C语言自学教程》180集:470万播放量 推荐学习-40小时         

【C语言】《带你学C带你飞》(小甲鱼)61集:380万播放量 入门前学习-18小时                760万播放量地址2

2020年视频-播放量910万-习题比较多        100万播放量地址2时间比较长

B:考点范围C基础知识、选择结构程序设计、理解分支结构的流程图表示、循环控制、数组的使用、函数的使用、指针的使用、结构体、文件操作C:C语言学习教程

笔记参考   参考文档

参考地址1

鱼C工作室

N诺C语言复习攻略

C语言学习笔记知识点齐全——新手入门必看【建议收藏】 

菜鸟教程C语言

C语言网教程

易百教程C语言教程

简单教程C 语言基础教程

C语言技术网C语言教程

Linux公社C语言

D:补充知识

                C语言——数据类型

                C语言——运算符优先级

                C语言——六大运算符

                C语言——| 和 ||——& 和 && 的区别用法

                搞懂C语言指针,看这篇就够了!

E:题库

         C语言——经典200道实例【基础例题100道——进阶例题100道】

         C语言——题库汇总        

         C语言——练习题_200题【选择题-判断-填空-程序设计】

         c语言——试题库编程题_[经典例题——60道]

         大学C语言各章节练习题_及答案合集【350题】《选择题- 判断-程序填空-程序设计》

F:其他资源

        C语言——BOOK

        C语言——上课重点知识截图_课堂练习

        指针-预处理-结构体-共用体-枚举-文件-位运算

 1.printf()和scanf()

        C语言——printf&scanf格式字符串【占位符】 

        C语言——输入【getchar-scanf-gets】输出【putchar-printf-puts】用法区别

1.1 printf() 四种用法:printf(“字符串\n”);printf(“输出控制符”, 输出参数);printf("输出控制符1 输出控制符2 输出控制符3 ", 输出参数1, 输出参数2, 输出参数3… ); // 输出控制符和输出参数个数必须一一对应。printf("输出控制符 非输出控制符 ", 输出参数);输出控制符数据类型%dint%ldlong int%cchar%ffloat%lfdouble

%x(或%X, #x %#X)

2f    2F   0x2f    0X2F

int 或 long int 或 short int%s字符串1.2 scanf() 两种用法:用法一:scanf(“输入控制符”, &输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。用法二:scanf(“非输入控制符”, &输入参数);功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。非输入控制符必须原样输入。scanf("m%d", &i); // m123 合法的输入, 123是非法的输入scanf("%d", &j);printf("j = %d\n", j);printf("%d/%f = %f\n", i, n, i/n);2.if 的常见问题解析 1. 空语句问题 if (3 > 2);等价于 if (3 > 2) ; // 这是一个空语句2. if...else...if (表达式)语句A; else: 语句B; 这是正确的。而:if (表达式); // 这里多了个 ';',形成了空语句 语句A; else // 这个 else 没有 if 配对语句B; 是错误的。3. if...else if...elseif (表达式1)语句A;else if (表达式2)语句B;else if (表达式3)语句C;else语句D;即便表达式1/2/3都成立,也只会执行A语句.4. if...else if...if (表达式1)语句A;else if (表达式2)语句B;else if (表达式3)语句C;这么写语法没有错,但是逻辑上有漏洞。5. if...else if...elseif (表达式1)语句A;else if (表达式2)语句B;else if (表达式3)语句C;else (表达式4) // 7行语句D;这样写是错误的,正确的写法是:要么去掉7行的(表达式4);要么在7行的 else 后面加 if 。6. if...else if...elseif (表达式1)语句A;else if (表达式2)语句B;else if (表达式3)语句C;else (表达式4); // 注意这里有个 ; ,跟5不一样语句D;这样写语法不会出错,但逻辑上是错误的。else (表达式4);语句D;等价于else(表达式4);语句D;3.数组的常见问题解析 错误示例 1int a[5];a[5] = {1, 2, 3, 4, 5};解释:只有在定义数组的同时才可以整体赋值,其他情况整体赋值都是错误的。 这里 a[5] 表示的是数组 a 的第 6 个元素,明显超出了定义的范围,所以错误。a 数组最多取到 a[4],即第 5 个元素。错误示例 2int a[5] = {1, 2, 3, 4, 5};a[5] = 100;解释:错误, 因为没有数组 a 没有 a[5] 这个元素,最多是 a[4]错误示例 3功能:实现把 a 数组中的值全部复制给 b 数组。错误的写法int a[5] = {1, 2, 3, 4, 5};int b[5];b = a; // error正确的写法:for (i=0; i终止被调函数,向主调函数返回表达式的值2>如果表达式为空,则只终止函数,不向主调函数返回任何值3> break是用来终止循环和switch的,return是用来终止函数的void f(){return;//return只用来终止函数,不向主调函数返回任何值}int f0{return 10;//第一:终止函数,第二:向主调函数返回10}int f({return 10.5;1//因为函数的返回值类型是int //所以最终f返回的是10而不是10.5}9.break和continue breakbreak如果用于循环是用来终止循环break如果用于switch,则是用于终止switchbreak不能直接用于if,除非if属于循环内部的一个子句continue用于跳过本次循环余下的语句,转去判断是否需要执行下次循环10.指针数组和数组指针的内存布局 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。指针数组:int *p1[10];这里需要明白一个符号之间的优先级问题。“[]”的优先级比“*”要高。只要看到int * 就首先认为他两个是结合在一起的。p1 与“[]”结合,构成一个数组的定义,数组名为p1,int *修饰的是数组的内容,即数组的每个元素。那现在我们清楚,这是一个数组,其包含10 个指向int 类型数据的指针,即指针数组。数组指针:int (*p2)[10];在这里“()”的优先级比“[]”高,“*”号和p2 构成一个指针的定义,指针变量名为p2,int 修饰的是数组的内容,即数组的每个元素。数组在这里并没有名字,是个匿名数组。那现在我们清楚p2 是一个指针,它指向一个包含10 个int 类型数据的数组,即数组指针。11.野指针 野指针:不守规矩乱跑的指针,最好把它拴住。栓“野指针”的链子就是这个“NULL”,定义指针变量的同时最好初始化为NULL,用完指针之后也将指针变量的值设置为NULL。也就是说除了在使用时,别的时间都把指针“栓”到0 地址处。这样它就老实了。12.typedef与#define的区别

C语言——typedef &define的区别用法 

1.执行时间不同关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。#define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。2.对指针的操作typedef (int*) p1;和#define p2 int*另外注意,一个有分号,一个没有分号!typedef int * pint;#define PIN T int *int i1 = 1, i2 = 2;const pint p1 = & i1; //p不可更改,p指向的内容可以更改,相当于 int * const p;const PIN T p2 = & i2; //p可以更改,p指向的内容不能更改,相当于 const int *p;或 int const *p;pint s1, s2; //s1和s2都是int型指针PIN T s3, s4; //相当于int * s3,s4;只有一个s3是指针13.文件操作

鱼C工作室         参考地址1

分类         函数名       功能                              

打开文件   fopen()        打开文件          

关闭文件   fclose()        关闭文件

文件定位   fseek()      改变文件位置指针的位置

                 rewind()     使文件位置指针重新至于文件开头

                 ftell()       返回文件位置指针的当前值

文件状态   feof()       若到文件末尾,函数值为真

                 ferror()      若对文件操作出错,函数值为真

                 clearerr()    使ferror和feof()函数值置零

文件读写    fgetc(),getc()从指定文件取得一个字符          

                  fputc(),putc()把字符输出到指定文件

                  fgets()从指定文件读取字符串

                  fputs()把字符串输出到指定文件

                  getw()从指定文件读取一个字(int型)

                  putw()把一个字输出到指定文件

                  fread()从指定文件中读取数据项

                  fwrite()把数据项写到指定文件中

                  fscanf()从指定文件按格式输入数据

                   fprintf()按指定格式将数据写到指定文件中

14:位运算计算

C位运算<< >> ~ & | ^(以数值的二进制位为单位进行操作的)

15:字符串函数运用

C字符串函数运用(strlen-strcpy-strcat-strncat-strcmp-strrev-strlwr-strupr-strchr-strstr)

16:函数

函数

调用类型描述传值调用该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。引用调用通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。17:数组

数组

概念描述多维数组C 支持多维数组。多维数组最简单的形式是二维数组。传递数组给函数您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。从函数返回数组C 允许从函数返回数组。指向数组的指针您可以通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。18:指针

指针

概念描述指针的算术运算可以对指针进行四种算术运算:++、--、+、-指针数组可以定义用来存储指针的数组。指向指针的指针C 允许指向指针的指针。传递指针给函数通过引用或地址传递参数,使传递的参数在调用函数中被改变。从函数返回指针C 允许函数返回指针到局部变量、静态变量和动态内存分配。

相关推荐: