C语言复习
注意事项
- #include 预处理命令,引入头文件。
- printf()格式化输出到屏幕。
- 代码是从main中执行的。
- return 0;是结束命令。
- <>和""区别前者是系统自带库,后者是用户自定义库。
- 常量定义为大写字母。
- %c字符,%s字符串。
- 标识符用字母或_开头,不许用特殊字符。
- 全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间
- 强制类型转换形式: (类型说明符)(表达式)
- 声明之后你不能直接使用这个变量,需要定义之后才能使用。
1.32个关键字
- 数据类型关键字
char,double,enum,float,int,long,short,stuct,union,signed,unsigned,void - 控制语句关键字
A循环语句:for,do,while,break,continue
B条件语句:if,else,goto
C开关语句:switch,case,default
D返回语句:return - 存储类型关键字
auto,register,extern,static - 其他关键字
sizeof,const,typedef,volatile
2.C数据类型
整数类型
浮点类型
- float 4个字节,6位小数
- double 8个字节,15位小数
- long double 16个字节,19位小数
void 类型
- 函数返回为空
- 函数参数为空
- 指针指向void *
3.C变量
- char 8位
- int 32位
- float 1位符号位,8位指数,23个小数
- double 1位符号为,11位指数,52位小数
- 允许定义各种其他类型的变量,比如枚举、指针、数组、结构、共用体等等
4.C常量
整数常量
- U无符号,L长整数
浮点常量
- 由整数部分、小数点、小数部分和指数部分组成
字符常量
- 字符常量是括在单引号中
- 在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义:\t,\n等等
字符串常量
定义常量
在 C 中,有两种简单的定义常量的方式:
使用 #define 预处理器。
使用 const 关键字
5.C存储类
auto
- 普通局部栈变量,调用时分配内存,函数结束时释放内存。
register
- 多次使用局部变量时,可以把该值放入到寄存器中,但是只能局部自动变量和形参可以,结束时释放。
static
- 修饰局部变量只定义一次,保持局部变量的值,存储在静态区
- 修饰全局变量限制在声明它的文件内。
extern
- 有两个或多个文件共享相同的全局变量或函数的时候
经过编译之后将内存分为以下
- 栈:由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址
- 堆:用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,程序员申请的空间在使用结束后应该释放,若程序员没有释放空间,则程序结束时系统自动回收。
- 全局(静态)存储区:分为DATA段和BSS段。DATA段(全局初始化区)存放初始化的全局变量和静态变量;BSS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。
- 文字常量区:存放常量字符串。程序结束后由系统释放。
- 程序代码区:存放程序的二进制代码。
6.运算符
算术运算符
- +,-,*,/,%,++,–。(a++先赋值后运算,++a先运算后赋值)
关系运算符
- ==若相等条件为真,!=若不相等条件为真,<,>,>=,<=
逻辑运算符
- &&,||,!.
位运算符
- &,|,^,~,<<,>>.左右移补0
赋值运算符
- 带等号的
杂项运算符
- sizeof()返回变量大小
- &返回变量地址
- *指向一个变量
- ?x:y 条件表达式,若为真则值为x
利用异或交换两个数
a=a^b;
b=a^b;
a=a^b;
是否是2的整数次幂
return ((num > 0) && ((num & (num - 1)) == 0));//2的n次幂大于0
返回值为1是
&与&&
| 和 ||,& 和 && 的区别
我们将 || 和 && 定义为逻辑运算符,而 | 和 & 定义为位运算符。
&& 如果两个操作数都非零,则条件为真;
|| 如果两个操作数中有任意一个非零,则条件为真。
& 按位与操作,按二进制位进行"与"运算。运算规则:(有 0 则为 0)
7.C判断
判断语句
- if
- if else
- switch
- switch(){ case : ; ;}
三元运算符 ?:
8.C循环
循环结构
- while(先判断后执行)
- do—while(先执行后判断)
- for
- 嵌套循环
循环控制语句
- break 程序流将继续执行紧接着循环或 switch 的下一条语句
- continue 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代
- goto 不建议使用
无限循环
- 例如for( ; 😉{} while(1){}