整型家族:
short 短整型 2字节 %hd
int 整型 4字节 %d
long 长整型 4字节 %ld
浮点家族:
float 单精度浮点型 4字节 %f
double 双精度浮点型 8字节 %lf
字符型:
char 字符型 1字节 %c
变量: 在程序运行过程中,其值可以发生变化的量。
常量: 在程序运行过程中,其值不发生改变的量,叫常量。
1. 算术运算 + - * / %
2. 关系运算 > >= < <= ==(相等) !=(不等)
3. 逻辑运算 && || !
优先级: 算术运算 > 关系运算 > 逻辑运算。
4.区分表达式的值:
x++ : 表达式的值,使用的是变量x 自增1之前的值。
++x : 表达式的值,使用的是变量x 自增1之后的值。
5.sizeof 操作符
作用: 求变量占内存空间的大小。
括号中的对象: 变量类型、变量名。
6. 条件运算符 (c 语言中唯一的三目运算符) 问号冒号表达式
格式: 表达式1 ? 表达式2 : 表达式3
意义: 表达式1为真吗 ? 如果为真,那么选取表达式2,否则,选取表达式3的结果。
7.运算符优先级:
括号成员第一: [] () . ->
全体单目第二: ++ -- ! sizeof (+)
乘除余三加减四: * / % + -
移位五、 >> <<
关系六: > >= < <=
等与不等排第七: == !=
位运算:八九十
逻辑与十一: &&
逻辑或:十二: ||
条件运算 : ?:
赋值: : = += -= *= &= |= ^= <<= >>=
逗号运算符 : ,
8.
进制基本问题:
十进制: 逢十进一。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
二进制: 逢二进一。 000 001 010 011 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000
八进制: 逢八进一。 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 20
十六进制:逢十六进一。 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10
不同进制有不同前缀:
八进制: 前缀为 0 。 0664 0777
十六进制:前缀为 0x. 0xa5
进制间的转换:
二进制转换成其他进制:
二转十:二进制中每个位的值,与对应的权值相乘,然后求和,最终的结果即为十进制数。
二转八:二进制的每三位,对应转换为八进制的一个位。
二转十六:二进制的每四位,对应转换为十六进制的一个位。
十转二: 十进制数除以2,将余数从右向左列排列开。将得到的结果重复刚才的除法过程,直到商为0时为止。排列的余数即为所求的二进制数。
八转二: 八进制的一个位,对应转换为二进制的三个位。
十六转二: 十六进制的一个位,对应转换为二进制的四个位。
9.字符串处理函数
1. 字符串拷贝函数: strcpy(dest,src);
2. 字符串拼接函数: strcat(dest,src);
3. 字符串长度函数: strlen(string);
4. 字符串比较函数: strcmp(s1,s2);
10.全局变量 与 局部变量
全局变量: 定义在函数之外的变量。
局部变量: 定义在函数之内的变量。
全局变量特点:
1) 如果没有进行初始化,全局变量的初始值为 0 。
2) 作用域:从定义的位置,到文件末尾。
3) 生命周期: 从程序的开始,到程序执行结束,全局变量始终存在。
4) 全局变量不能重名。
局部变量特点:
1) 如果没有进行初始化,局部变量的初始值为 随机值。
2) 作用域: 函数内。
3) 生命周期:在函数被调用时定义,函数执行结束后,变量消亡。
4) 不能重名。
注: 全局变量 和 局部变量可以重名。 如果重名,那么会使用局部变量。
11.内存管理
1. c语言定义了 4 个内存区间: 静态全局区、代码区、堆区、栈区
代码区: 用来保存代码。 只读。
静态全局区: 用来保存静态变量、全局变量、字符串常量。
栈区: 在函数调用时,系统会为函数自动分配内存空间。用来保存局部变量等内容
在函数执行结束后,系统会自动释放栈空间。
堆区: 程序员专用区。 申请空间,需要手动申请,使用 malloc 函数。
也就是: 如果只有在程序运行过程中,才知道要使用的内存多大。使用这种动态分配的方式。
12.静态库与动态库的区别:
静态库:在程序编译时加载。 *.a
动态库:在程序执行时进行链接。 *.so
1.生成 hello.o 文件
原因: 库文件都是由 .o 文件生成的。
命令: gcc -c hello.c -o hello.o
2. 制作动态库(共享库)
命令: gcc -fPCI -shared hello.o -o libmyhello.so // 动态库的命名规则: lib + 库名 + .so (动态库)
3.制作静态库
命令: ar cr -o libmyhello.a hello.o
制作完需要使用时,编译和执行:
gcc main.c -L. -lmyhello
./a.out
