
C语言_基础
dishening7
这个作者很懒,什么都没留下…
展开
-
头文件中应该放些什么?
头文件中应该放入:#1 函数原型声明#2全局变量声明这里说的是声明,不是定义。即:extern int global;#3自己定义的宏和类型而下列是不该放入的:#1 全局变量和函数的定义全局变量只能定义一次,如果把int global;这样的语句放在头文件中,那么所有包含这个头文件的地方都定义一次全局变量global,到了链接的时候链接程序就会报告找到多个global。函数的情原创 2006-06-18 19:14:00 · 2883 阅读 · 0 评论 -
关于静态库(Static library or Archive library)
静态库就是把原来的目标代码放在一起,连接的时候链接程序根据每一份目标代码的符号表查找相应的符号(函数和变量的名字) 找到就把该函数里面需要定位的符号进行定位,然后将整块函数代码放进可执行文件里,否则报错。例如:test.cextern int global;void f(void);int main(void){ f(); ++global; return 0;}testa.cexter原创 2006-07-01 11:00:00 · 2008 阅读 · 0 评论 -
动态库与位置无关代码
静态库的缺点:1 链接后产生的可执行文件包含了所有需要调用的函数的代码,因此占用的磁盘空间较大。2 如果有多个(调用相同库函数的) 进程在内存中同时运行,内存中就有多份相同库函数代码,故占内存空间较大。所以产生了动态库,在程序装载入内存时才真正把库函数代码链接进来确定它们的地址。并且在上面2的情况下,内存中也只存有一份函数代码(但动态库的数据可能有多份副本,当某一连接到动态库的进程要修改库的数原创 2006-07-01 11:37:00 · 4673 阅读 · 2 评论 -
c语言中的类型转换与复合类型
数据类型转换是C语言中颇具争议的一个话题,这里不多加评论,单就其中整形与浮点型之间的转换做一些解说. 由于表示范围的原因,你可能认为把整型数转换为浮点型一定是安全的,但实际上不是这么简单。因为浮点型存储的数值虽然大但却受精度的限制。如unsigned int u=4294967295;float f=u;接过f变成了4294967296.000000所以要把一个整形换成float在转换回来还要和原原创 2006-07-01 17:20:00 · 1481 阅读 · 0 评论 -
关于指针
#1 首先要知道的是 *运算符比[ ](对于数组)和( )(对于函数)运算符优先级低。这有助于理解指针到底是指向什么的指针。例如:char array[5]; /*char (array[5])*/char *array1[5]; /*char (*(array[5])) 指针数组,array中放着5个指向char的*/char (*array2)[5]; /*数组指针,指向一个由5个ch原创 2006-07-02 11:31:00 · 1234 阅读 · 0 评论 -
与C语言“无关”的C语言
#1 词法分析词法分析的最大匹配原则:在编译器遇到“空白” (空格、回车、制表符等)之前,以能够取得的、有意义的、最长的字符串作为记号。#2 注释/**/注释方式不支持嵌套注释注释三原则:1 字符串里的注释符不起注释作用2 注释符里的双引号不起表示字符串的作用3 如果情况混乱则从头找起#3 新数据类型的定义建议使用typedef,定义方法与声明变量类似,只不过前面加上typedef。应注意原创 2006-07-02 12:55:00 · 3238 阅读 · 2 评论