linux下c的学习

1.c语言相较于其他语言的优点:
(1)良好的移植性
(2)运行效率高
(3)生成目标代码质量高,程序执行效率高
2.静态库与动态库的定义与区别
(1)库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。
什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间。
上面提到库在使用的时候需要 Link,Link 的方式有两种,静态和动态,于是便产生了静态库和动态库。
(2)静态库的定义
静态库即静态链接库(Windows 下的 .lib,Linux 和 Mac 下的 .a)。之所以叫做静态,是因为静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了。
(3)动态库定义
动态库即动态链接库(Windows 下的 .dll,Linux 下的 .so,Mac 下的 .dylib)。与静态库相反,动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。
(4)静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。
(5)动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
(6)无论静态库,还是动态库,都是由.o文件创建的。
3.c的数据类型
3.1整型类型
类型 字节数 取值范围
(1)int 4个字节 -2^31 ~ 2^31-1
(2)short int 2个字节 -215~215-1
(3)long int 8个字节 -263~263-1
(4)char 1个字节 -27~27-1
前四个默认是有符号类型的,后面两个是无符号类型的
(5)unsigned int 4个字节 0~2^31-1
(6)unsigened char 1个字节 0~ 2^7-1
3.2 浮点类型
(1)float 4个字节
(2)double 8个字节
4.测量数据类型的大小用 sizeof
5.测数据类性取值范围时
调用关键字,例如INT_MAX,INT_MIN 需要调用库函数<limits.h>
因此c文件前应加上预处理语句#include<stdio.h>
6.注释
6.1在c语句前加上//就行
6.2#if 0
#endif
在语句中间加上这两行,这两行间的语句就等于没编辑在c文件中,也不进行编译,这也是检查c程序错误的一个好方法。
#if 1
#endif
…………
7.类型的强制转换
7.1普通强制转换
例如
int a,b;
(float)a+(float)b运算过程就是先将a,b转换成float参与运算
结果就是个float类性
7.2数据类型的隐性转换
int a=-20;
unsigned int b=6;
printf("%u\n",a+b);
这时输出的结果就该是将a,b转换成无符号类型再相加
数据类型转换 char,short->int->unsigned->long->double<-float

猜你喜欢

转载自blog.csdn.net/qq_42579119/article/details/84255613