上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 56 下一页

2022年5月4日

摘要: 几十年以前,计算机刚刚诞生,人们编写程序时,将所有的代码都写在同一个源文件中,经过长期的积累,程序包含了数百万行的代码,以至于人们无法维护这个程序了。于是人们开始寻找新的方法,迫切地希望将程序源代码分散到多个文件中,一个文件一个模块,以便更好地阅读和维护,这个时候,链接器就粉墨登场了。 一切都是地址 阅读全文
posted @ 2022-05-04 08:25 朴素贝叶斯 阅读(1165) 评论(0) 推荐(0) 编辑

2022年5月3日

摘要: 编译器编译源代码(由于汇编比较简单,这里汇编包含在编译中)后生成的文件叫做目标文件(Object File),例如 Visual Studio 下的.obj,或者 GCC 下的.o。 从文件结构上来讲,目标文件已经是二进制文件,它与可执行文件的组织形式非常类似,只是有些变量和函数的地址还未确定,程序 阅读全文
posted @ 2022-05-03 09:04 朴素贝叶斯 阅读(1682) 评论(2) 推荐(0) 编辑

2022年5月2日

摘要: 对于平常应用程序的开发,很少有人会关注编译和链接的过程,因为我们使用的工具一般都是流行的集成开发环境(IDE),比如 Visual Studio、Dev C++、C-Free 等。这些功能强大的 IDE 通常将编译和链接合并到一起,也就是构建(Build)或运行(Run)。即使在 Linux 下使用 阅读全文
posted @ 2022-05-02 20:08 朴素贝叶斯 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 在前面的教程中,我们都是将所有的代码写到一个源文件里面,对于小程序,代码不过几百行,这或许无可厚非,但当程序膨胀代码到几千行甚至上万行后,就应该考虑将代码分散到多个文件中,否则代码的阅读和维护将成为一件痛苦的事情。 本节我们就来演示一下多文件编程。在下面的例子中,我们创建了两个源文件 main.c 阅读全文
posted @ 2022-05-02 19:16 朴素贝叶斯 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 我们知道,变量是有数据类型的,用以说明它占用多大的内存空间,可以进行什么样的操作。 除了数据类型,变量还有一个属性,称为“存储类别”。存储类别就是变量在内存中的存放区域。在进程的地址空间中,常量区、全局数据区和栈区可以用来存放变量的值。 常量区和全局数据区的内存在程序启动时就已经由操作系统分配好,占 阅读全文
posted @ 2022-05-02 17:40 朴素贝叶斯 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 使用 malloc()、calloc()、realloc() 动态分配的内存,如果没有指针指向它,就无法进行任何操作,这段内存会一直被程序占用,直到程序运行结束由操作系统回收。 请看下面的代码: #include <stdio.h> #include <stdlib.h> int main(){ c 阅读全文
posted @ 2022-05-02 15:10 朴素贝叶斯 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 如果一个指针指向的内存没有访问权限, 或者指向一块已经释放掉的内存, 那么就无法对该指针进行操作,这样的指针称为野指针(Wild Pointer)。 指向没有访问权限的内存 请看下面的代码: #include <stdio.h> int main(){ char *str; gets(str); p 阅读全文
posted @ 2022-05-02 14:35 朴素贝叶斯 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而且申请的大小从几个字节到几个GB都有可能,我们不能假设程序一次申请多少堆空间,因此,堆的管理显得较为复杂。 那么,使用 malloc() 在堆上分配内存到底是如何实现 阅读全文
posted @ 2022-05-02 13:08 朴素贝叶斯 阅读(251) 评论(0) 推荐(1) 编辑

2022年5月1日

摘要: 在进程的地址空间中,代码区、常量区、全局数据区的内存在程序启动时就已经分配好了,它们大小固定,不能由程序员分配和释放,只能等到程序运行结束由操作系统回收。这称为静态内存分配。 栈区和堆区的内存在程序运行期间可以根据实际需求来分配和释放,不用在程序刚启动时就备足所有内存。这称为动态内存分配。 使用静态 阅读全文
posted @ 2022-05-01 19:08 朴素贝叶斯 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 我们先来看下面的一个例子: #include <stdio.h> int main(){ char str[10] = {0}; gets(str); printf("str: %s\n", str); return 0; } 在 main() 函数内部定义一个字符数组,并通过 gets() 为它赋 阅读全文
posted @ 2022-05-01 18:17 朴素贝叶斯 阅读(288) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 56 下一页

导航