复习
学习:
C语言基础:
????1.基础:
????????1.基本数据类型、运算符、表达式
????????2.常用的输入输出函数
????????3.流程控制
????2.重点知识:
????????1.数组
????????2.函数
????????3.指针
????3.难点知识:
????????1.构造数据类型
????????2.链表
????????3.内存管理
1.进制转换:
????二进制、八进制、十进制、十六进制
????二进制:0 1
????八进制:0 1 2 3 4 5 6 7
????十进制:0 1 2 3 4 5 6 7 8 9
????十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f
????二进制、八进制、十六进制 -> 十进制:
????????对应位 * 对应位的权值再求和
????123 == 1 * 100 + 2 * 10 + 3 * 1
????????== 123
????1001 1110 -> 158
????1af -> 15 + 160 + 256
????????-> 431
????十进制 -> 二进制、八进制、十六进制:
????????十进制数除以进制数得到的余数逆序排列
? ?二进制 八进制 十六进制:
? ? ? ? 八进制1位对应二进制3位
? ? ? ? 十六进制1位对应二进制4位
2.程序如何在C语言中被运行起来?
????程序(外存中)
????执行(加载到内存中)
????程序运行结束(回收内存空间)
3.数字在内存中的存储:
????正数在计算机中存放对应的二进制数
????负数在计算机中存放补码
????????1.原码
????????2.反码 ?
????????3.补码
????????4.内存数据
4.gcc编译的流程步骤:
????gcc filename.c
?1.预处理:处理和#号相关代码
? ? ? ?1.头文件展开#include
????????2.宏定义替换#define ?M ???100 ?
????????3.条件编译#if #elif #else #endif #ifndef #ifdef
?????gcc -E filename.c -o filename.i
2.编译:将C语言程序编译成汇编代码
gcc -S filename.c -o filename.s
????3.汇编:将汇编代码编译成二进制代码
gcc -c filename.c -o filename.o
4.链接:将多个二进制代码链接成为一个可执行程序
gcc filename.c -o filename
1.基本数据类型、运算符、表达式
????1.数据类型分类
????????1.基本数据类型:
????????????整形数据 short int long
????????????????????short (signed short)
??????????????????????????unsigned short
????????????????????int ??(signed int)
??????????????????????????unsigned int
????????????????????long ?(signed long)
??????????????????????????unsigned long
????????????浮点型数据 float double
????????????字符型 char
????????????逻辑类型(泊尔类型) bool
????????????缺省类型(void)
????2.构造数据类型:
????????????结构体
????????????共用体
????????????枚举类型
????3.基本数据类型
????????1.整数类型:
? ? 名称? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 占内存空间 ?????????值域范围 ????????????????存储方式
?????short: 短整形? ? ? ? ? ? ? ? ? ? ? ? ? ? ??2个字节空间 ????????-32768 - 32767 ??????补码
? ? ??unsigned short: 无符号短整型 ??2个字节空间 ????????0 - 65535? ? ? ? ? ? ? ? 对应的二进制数
??????int: ??整形? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4个字节空间 ????????-21亿 - 21亿 ???????????补码
???????unsigned int: ??无符号整形 ???????4个字节空间 ????????0 - 42亿? ? ? ? ? ? ? ? ? ?对应的二进制数
???????long: ?长整型? ? ? ? ? ? ? ? ? ? ? ? ? ? ?8个字节空间 ????????-2^63 - 2^63 -1 ???????补码
??????unsigned long: ?无符号长整型 ???8个字节空间 ????????0 - 2^64? ? ? ? ? ? ? ? ? ?对应的二进制数
????????????练习:
????????????????编写程序测试数据类型所占字节数:
????????????????????short ??2
????????????????????int ????4
????????????????????long ???8
????????????????????float ??4
????????????????????double ?8
????????????????????char ???1
????????????????????void ???1
?????????
????????2.浮点数类型:
????????????float
????????????double
????????????3.1415926
????????????5.12
????????????所有的浮点数类型均为有符号类型,没有无符号类型的概念
名称? ? ? ? ? 占内存空间大小 ?????????值域范围 ???????????????????????存储方式
float? ? ?) ????4个字节 ????????-3.4*10^38 - 1.18*10^-38 ????????????1位符号位 + 8位指数位 + 23位尾? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.18*16^-38 - 3.4*10^38
??单精度浮点数类型(最多表示6-8位有效数)
double? ? ??8个字节 ????????-1.80*10^308 - 2.23*10^-308 ?????????1位符号位 + 11位指数位 + 52位尾数? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???2.23*10^-308 - 1.80*10^308
双精度浮点数类型(最多表示12-14位有效数字)
????????????浮点数 -> 二进制形式 -> 科学计数法转换 -> 小数点后存入尾数位中 -> 指数位+偏移数(float:127 double:1023)以二进制形式存入指数位中
????????????IEEE754
????????????和整数存储方式完全不同
????????3.字符型:
????????????char
????????????a .. z
????????????A .. Z
????????????# ? ..
? ? ? ? ASCII码表:
????????????字符和数字的对应关系
?名称? ? ? ? ? ? ? ? ? ? 内存空间大小 ?????????值域范围 ??????存储方式
unsigned char ?????1个字节 ?????????????????0 - 255 ?????????存储字符在ASCII码表中对应数字的二进制形式
?signed char ????????1个字节 ????????????????-128 - 127
? ? ? 4.逻辑类型:
????????????bool
名称? ? ? ? ? ? ? ? ? ? ? 内存空间大小 ???????????值域范围 ???????????????存储方式
?泊尔类型 bool ??????1个字节 ????????????????true? ? ? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?false? ? ? ? ? ? ? ? ? ? ? ? ? ? 0
? ? ? ?在C语言中所有的非0值均为逻辑真值,0值为逻辑假值
? ? ? ? ? 5.缺省类型:void
? ? ? ?搭配函数和指针使用
void a;
2.常量和变量:
????????1.常量: 在程序运行过程中值不允许发生改变的量
????????2.变量: 在程序运行过程中值可以发生改变的量
????????3.表达式:由一个或者多个运算符连接的变量和常量组成的式子
????1.整形常量:
????????默认为int类型
????????100 ????????int类型
????????100l ???????long类型
????????100u ???????unsigned int类型
????????100ul ??????unsigned long类型
????????100L
????????100U
????????100UL
????????0123 ???????八进制常量? ? ?(0代表八进制)
????????0x1a ???????十六进制常量?(0x代表十六进制)
????????0X1A
????2.整形变量:
????????1.变量要先定义再使用
????????????1.变量定义的形式:
????????????????数据类型 变量名;
????????????????1.变量名可以由字母、数字、下划线构成不能以数字开头
????????????????2.变量名不能与C语言关键字重名
????????????????3.变量名最好不要与库函数重名
????????????????4.变量名最好是见名知意
????????????????????驼峰法:
????????????????????int TempNum;
????????????????????int MaxCnt;
????????????????????int MinNum;
????????????????????int AvgScore;
????????????????????内核法:
????????????????????int temp_num;
????????????????????int max_cnt;
????????????????????int min_cnt;
????????????????????int avg_score;
????????2.变量拥有存储空间,也有值域范围
????3. 浮点型常量:
????????默认为double类型
????????3.1415 ?????????double类型
????????3.1415f ????????float类型
????????3.1415e8
????????3.1415e-8
????????3.1415E8
????????3.1414E-8
????4. 浮点型变量:
????????double d;
????????float f;
????5.字符型常量:
????????'a' 'A'
????????'z' 'Z'
????????'?' '#'
????????'~' ' '
????????'\'' : '号
????????'\n' : 换行符
????????'\t' : 横向制表符
????????'\v' : 纵向制表符
????????'\r' : 回车符
????????'\b' : 退格符
????????'\\' : \符
????????'0'
????????'1' ?: 字符1
????????'2' ?
????????'3'
????????'4'
????????'5'
????????'6'
????????'7'
????????'8'
????????'9'
????????'\0' : 字符\0
????????'1' -> ASCII码表 -> 49 ?????
????????1 ??: 1
????????'0' ?: 48
????????0 ???: 0
????????'\0' : ASCII码值为0 用来标识字符串的结尾
????????'\123' : 八进制123对应的字符
????????'\x32' : 十六进制32对应的字符 ?
????6.字符型变量:
????????char ch;