期末突击-C语言程序设计
期末突击-C 语言程序设计
1.注释语句不可以嵌套
2.(int)强制类型转换要加括号
3.L 只用于长整型标识 1.111e3L 不合法
4.0x+ 数字表示十六进制整形常量,0 开头则为八进制整形常量 无位数限制,按类型范围截断
\x+ 数字作为字符转义 会返回 16 进制对应 ASCII 码值的字符 这里要注意不是\0x 取位限制两位至 255
+数字则是 8 进制 只取前三位
如果你要输出这些进制的数,会直接输出,不会带这些符号
例如用 %x 输出 16 输出的是 10 不是 0x10
%x 十六进制 %o 八进制
5.负数按补码存 源码取反再加一是补码
6.scanf 中 %d 也是贪婪匹配
7.%d 输出浮点类型直接 0,注意是不是用 %d 输出的
但 %f 能输出整型,带.0
8.整型常量的除法返回值一定是整型,无论接的变量的数据类型
Float a=2/3 a 还是等于 0
所以小数初始化除数一定一定要加.0 啊
9.逗号表达式优先级最低,小于赋值表达式
10.if 后紧跟 else 不能有别的语句
if(a==1)b=2;c=3;else d=4;不合法
11.符号常量可以用来声明数组
12.static 改变的是函数的生存期 而非作用域;只是数值不刷新 还是不能域外引用
13.关注函数中变量的初始值,有的根本不是 0
14.阶乘用递归
15.宏定义函数不会添括号,只是字符替换
16.函数的形参会占用(栈区的)存储单元
17.fwrite 专门向文件写入数据块
18.scanf 的第一个参数一定是字符串常量
19.switch 后的表达式必须是整型类型;case 后的标签必须是整型常量表达式(比如 10、'a'、3+5 等),绝对不能是浮点数(如 3.14、2.0),也不能是变量、浮点表达式
20.C 语言中 main 函数必须返回 int 类型值
21.sizeof 是一个运算符 而不是函数 因为 sizeof 括号可选
22.#include <stdio.h> 用于引入标准输入输出库
23.文件指针的位置由打开方式决定 并不是总是从头开始
24.C 语言中数组下标不能是负数
25.C 语言中语句必须以;结尾
26.scanf 函数的第一个参数必须是字符串常量
27.在 C 语言中,所有函数之外定义的变量 被称为 全局变量
在函数内部才是自动变量
28.C 语言中,**数组下标 [] 的优先级高于解引用 *******,所以声明一个指向含有 10 个元素的一维字符型数组的指针,即先用[]判断是不是数组 再用*判断是不是指针

29.指针相减返回的是元素个数,不是字节数
30.gets,strcpy,scanf 都不会检查缓冲区溢出的问题
31.malloc 返回的指针所指向的内存空间不会自动初始化
32.C 语言中全局变量在程序中任何位置都可以访问
33.和指针直接相关的操作里,******* 永远干不过 []/()/ 后置****++**—— 这就是为什么 *p++ 是 *(p++),*arr[0] 是 *(arr[0]),而不是你直觉里的 (*p)++/(*arr)[0]。
![CVE-2022-47615[任意文件读取]](/img/BqvBbcdufoB3S8xJ1FQcnMsenkh.png)

