程序员

计算机二级【C语言】知识点以及常见易错问题总结

作者:admin 2021-08-05 我要评论

计算机二级【C语言】知识点以及常见易错问题总结 1 分号 1注意每个语句后面需要加分号2预处理命令非可执行命令后面无需分号且运用时尽量将实参加括号避免出错3sw...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

计算机二级【C语言】知识点以及常见易错问题总结

1 分号

(1)注意每个语句后面需要加分号;
(2)预处理命令(非可执行命令)后面无需分号,且运用时尽量将实参加括号,避免出错;
(3)switch语句以及typedef语句最后面加分号即可,中间无需分号(括号内除外);

2 逗号

(1)逗号表达式的值等于最后一个表达式的值;
(2)逗号运算符是一个序列点,其左边所有副作用都结束以后,才对其右边的表达式进行运算;i++与++i效果一样

3 {}

(1)for语句、if语句等如果没加括号,只与后面第一个分号之前的内容有关;

4 函数变量生命周期

(1)函数运行完之后,其变量名会被释放,内存也会被释放(标为可用),具体详细原理可见:https://blog.csdn.net/weixin_30580341/article/details/95667655
(2)返回值在传递之后其内存也会被释放;
(3)malloc内存存放在堆里,其在函数运行之后不会被释放;
(4)实参地址传递,执行完其地址不会释放;原因:实参地址属于函数之外的内容

5 continue&break

(1) continue语句是使程序跳过循环体中剩余语句而进入下一次循环,在for循环体中还是会执行(;;)中第三块内容中的x++或者x--等语句的;
(2) break语句只能用于循环体内和switch语句内;

6 短路现象

(1)a && b :如果表达式a的值为0,则表达式b内容不执行;
(2)a || b :如果表达式a的值为1,则表达式b内容不执行;

第二章 C语言概述

(1)使用顺序、选择(分支)、循环3种基本结构可以解决所有问题;
(2)a) 源程序(.C):C语言; b)目标程序(.obj):编译后形成,二进制(binary); c)可执行程序(.exe):连接C语言库函数后形成;ps:用C语言编写的程序称为源程序,它以ASCII码形式存放在一个文本文件中
(3)非执行语句不会被编译,不会生成二进制机器指令
(4)任何一个C语言程序都是从主函数main开始,到主函数main结束;
(5)数值常量中不能带空格以及逗号;115L表示115是长整型数据,合法;
(6)变量必须先定义再使用;变量定义通常放在函数体前部,但也可以放在函数体或者复合语句开头,不能随意放置
(7)运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致;
(8)C语言是由函数组成的
(9)C语言区分大小写,下标从0开始;
(10)标识符由字母、下划线、数字组成,且开头必须是字母或下划线;变量命名必须符合标识符命名规则;
(11)C语言在运行过程中的所有计算都以二进制方式进行;C语言只接受八进制、十进制、十六进制的数;
(12)实型常量的指数形式一般形式为:E、e两端必须要有数,其中前面为浮点数,后面为整数(数字前后都可以加正号“+”);E或e前后以及数字之间不能有空格
(13)字符串常量用双引号,字符常量用单引号;
(14)’’ 应写成‘\’;“\\”应写成“\\“”;“”代表空串,合法
(15)八进制常量以0开头,十六进制常量以0x或者0X开头;转义字符可用八进制以及十六进制表示,八进制反斜线后可以不用0开头,十六进制反斜线后只可用小写字母x开头;注意:八进制没有8
(16)“int a = b= 0;” -> 错误,b变量还没有定义,不能用于赋值;赋值运算符的结合方向为从右至左
(17)C语言没有逻辑类型,有布尔类型;整型可无误差的表示自然数;
(18)“/”以及“/”必须成对出现,不能嵌套使用(有了“/”之后,只检测“/”作为注释结束),且“/”与“*”之间不能有空格;注释可以出现在程序中的任意位置;
(19)对于标识符的长度,C语言编译系统规定标识符的前若干个字符有效,超过的字符将不被识别,不同编译系统规定的标识符有效长度不同
(20)unsigned是关键字,getch是库函数名,都不是合法的用户标识符;
(21)25u属于无符号整数;-32是十进制有符号整数;+20L是十进制形式的长整数;12f是float类型的实数;
(22)整型常量只能用数字表示,不带小数点;实型常量必须用带小数点的数表示,可分为小数形式以及指数形式;字符型常量是单括号括起来的单个字符;字符串常量是双括号括起来的若干个字符;
(23)转义字符整体算一个字符,比如‘\t’代表横向跳若干个格,‘\b’代表退格符,’\r’代表回车符,‘\n’代表换行符(‘\r\n’windows等操作系统中);

第三章 运算符与表达式

(1)强制类型转换:(类型)常量/变量;注意括号位置
(2)“&&”两边任意,不一定需要整数;“++”、“–”、“!”,“<=”可以是double类型;“%”两边一定要int;
(3)表达式以及常量不能被赋值,即表达式以及常量不可以在等号左边
(4)“+”优先级高于“-=”;“<=”、“==”优先级高于“=”;
(5)如果z为int,则z=1+0.9执行后,z的值仍为1,而不是四舍五入
(6)取模运算法“%”以及二元运算符具有左结合性,参与运算的量均为整型。
(7)运算符两侧类型不同时,将进行隐式类型转换;C语言中的基本运算符除了加减乘除之外,还有取余操作
(8)自增自减运算符的优先级高于逻辑运算符,且&&运算符优先级高于||,逻辑运算符从左向右运算。故a++||b++&&c++等价于(a++)||((b++)&&(c++)),运算顺序为a++、b++、c++;
(9)字符类型变量不可加减;
(10)运算优先级要注意运算层级,先乘除后加减只适用于同级运算;a+b+c*(d+e):先执行a+b得到r1.再执行(d+e)得到r2,再执行c*r2得到r3,最后执行r1+r3得出表达式的最终结果;
(11)“^”异或运算满足一下规则:a)满足交换律;b)一个数与0异或的结果仍是原数;c)一个数与1异或的结果是原数按位取反;

第四章 基本语句

(1)在输入整数或实数这类数值型数据时输入数据之间必须用空格、回车、换行、制表符等间隔符分开,间隔符个数不限
(2)“%d”表示十进制格式输出;%lf用于double类型输入与输出;%f用于float类型输入,用于float以及double类型输出(输入时两者不可混用);
(3)scanf()函数的格式字符前,可以加入一个正整数指定输入数据所占的宽度,但是不可以对实数指定小数位的宽度
(4)printf()函数的格式化字符串中使用“n1.n2”的形式类指定输出宽度(n1、n2分别代表一个长整数),其中n1代表指定输出数据的宽度(包含小数点),n2指定小数位的位数,n2也称为精度;当小数位数多于n2时,则四舍五入,当小数位少于n2时,则补零。

其他:
(1)数组名不可被赋值
(2)函数地址传递只会改变实参地址指向的值,不会改变实参地址;函数值传递不会改变实参的值。
(3)预处理命令命令都以#开头,不是可执行命令,只占用编译时间,不占用运行时间,包含宏定义、条件编译、文件包含等。宏名不一定需要大写。typrdef在编译时处理,但是不是预处理命令。
(4)指针类型占用四个字节(无论何种类型);文件指针也是4个字节;

类型大小
char1字节
bool1字节
short2字节
int4字节
long4字节
double8字节

(5)结构体成员名不可包含其本身类型的结构体,但可以包含指向其类型变量的指针,形成链表。
(6)用户标识符可为库函数名(预定义标识符),但其会失效;不可为关键字;
(7)printf("%lf%le%hd%ld%s",……),……可为字符串首地址,用以输出从该地址之后的字符串。h代表short,l代表long或者双精度数据double,e表示指数形式、科学计数法。
(8)*在定义指针时表示说明符,在赋值时表示间址运算符。
(9)字符串在定义是可以通过{“ ”}或者“ ”赋值,不管是数组还是指针;定义后,指针只能通过“ ”赋值,数组名不可复制。
(10)函数每一级迭代会保持相应的变量值。
(11) 0 = ‘\0’ = NULL; ++p->x = ++(p->x);
*p++=*(p++)
(12)软件测试用于发现程序中的错误,程序调试用于诊断和改正程序中的错误;
(13)malloc函数结束内存不释放:fgets(str,4,fp),只多输出3个字符,自动加上‘\0’;
(14)下标从0开始,区分大小写;
(15)fgets用于读取长度为(n-1)个字符串;fread用于读取指定长度的数据项,对应二进制打开方式;fscanf按指定格式读,用于文本打开方式。fseek(origin 0:开头,1:当前,2:结尾):移动位置指针(offset +向后,-向前);rewind位置指针回到开头;ftell获取当前指针;feof(fp):结尾为非零值。
(16)文本打开方式 -> r:只读;w只写;a:从开头读,追加写;+:可读可写;b:二进制。
(17)没有对指针初始化,则其地址不确定,为无效指针;
(18)abs:对整数取绝对值(stdlib.h);fabs:对浮点数取绝对值(math.h);
(19)switch之后不可为double;
(20)双向链表具有两个以上的指针,但属于线性结构。循环队列是顺序存储结构,循环链表是链式存储结构。常见线性结构有:线性表、栈、对列、双队列、数组、串、矩阵、循环链表、双向链表;常见非线性结构:二维数组、多维数组、广义表、树、图。
(21)链表不可通过头、尾指针相减得到长度,两者都为NULL则长度为0,两者相等则长度为1;循环队列两者相等则队列为空或者队列为满,rear(尾指针)-front(头指针)如果小于0,长度应该+m(满空间大小)。
(22)满二叉树为完全二叉树,度为n的满二叉树,节点数为2n-1。叶子节点比度为2的节点多1。满二叉树第k层有2(n-1)个节点。
(23)树的节点数 = 树中所有节点的度的和+1;
(24)系统结构图中-> 扇入:调用一个给定模块的模块个数;扇出:由一个模块直接调用的其他模块数。
(25)关系数据库设计有需求分析(形成需求说明书)、概念设计(形成概念数据模型:E-R模型)、逻辑设计(形成逻辑数据模型:将E-R模型转换为关系模型、关系视图设计、模式规范化)、物理设计(形成数据库内部模型:涉及软硬件环境)、编码、测试、运行、进一步修改等几个阶段。
(16)关系的第一范式:每个属性不可再分为简单项;第二范式:每个非主属性完全依赖于关系的某个候选键,消除了非主属性对主键的部分依赖;第三范式:每个非主属性不传递依赖于R的候选键,即非主属性不可决定其他非主属性

;原文链接:https://blog.csdn.net/wqy1837154675/article/details/115719107

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 十月更新修复了Windows 10的Ping of De

    十月更新修复了Windows 10的Ping of De

  • Windows10 UAC弹窗太烦但又不能关?教

    Windows10 UAC弹窗太烦但又不能关?教

  • 老大手把手教我玩 Git 变基!

    老大手把手教我玩 Git 变基!

  • 在Linux终端中展示幻灯片

    在Linux终端中展示幻灯片

腾讯云代理商
海外云服务器