C语言
Gaodes
这个作者很懒,什么都没留下…
展开
-
C语言中的malloc和free函数
C标准库提供了一个称为malloc程序包的显式分配器。程序通过调用malloc函数来从堆中分配块。#include <stdlib.h>void *malloc(size_t size); //返回:若成功则为已分配的指针,若出错则为NULLmalloc函数返回一个指针,指向大小为至少size字节的内存块,这个块会为可能包含在这个块内的任何数据类型做对齐。实际中,对齐依赖于编译代码在32位模式还是64位模式中运行。在32位模式中,malloc返回的块的地址是8的倍数。在64位原创 2021-04-11 15:01:36 · 246 阅读 · 0 评论 -
了解编译系统
对于像hello.c这样简单的程序,我们可以依靠编译系统生成正确有效的机器代码,但是,有一些重要原因促使程序员必须知道编译系统是如何工作。优化程序性能:现代编译器都是成熟的工具,通常可以生成很好的代码。作为程序员,我们确实需要了解编译器的内部工作。但是为了在C车那个徐做出好的编码选择,我们确实需要了解一些机器代码以及编译器将不同C程序中转化成机器代码的形式。理解连接时出现的错误。根据我们的经验,一些最令人困惑的程序错误往往与连接器操作有关,尤其当你试图构件大型的软件系统。避免安全漏洞,多年来,缓原创 2020-07-19 16:42:04 · 308 阅读 · 0 评论 -
了解gcc编译器
GCC是GNU(GNU is not Unix)项目开发出来的众多有用工具之一。GNU项目是1984年的一个慈善项目。该项目的目标非常宏大,就是开发出一个完整的类Unix的系统,其源代码不受限制地被修改和传播。GNU项目已经开发出了一个包含Unix操作系统的所有的主要部件的环境,但内核是由linux项目独立发展出来的。GNU环境包含EMACS编辑器,GCC编译器,GDB调试器,汇编器,连接器,处理二进制文件的工具。GCC编译器已经发展到支持多种语言,能够为许多不同的机器生产代码。支持的语言包含c,c++,f原创 2020-07-19 16:32:04 · 260 阅读 · 0 评论 -
C语言编译原理
C程序的生命周期是从一个高级C语言程序开始的,因为这种形式能够被别人读懂。然而,为了在系统上运行.c程序,每天C语句都必须被其他程序转化成为系列的低级机器语言指令。然后这些指令一种称为可执行目标程序的格式打好包,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件。在Unix系统上,从源文件到目标文件的转换是由编译器驱动程序完成的。linux上 gcc -o hello hello.c在上面这条指令,gcc编译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行目标文件h..原创 2020-07-19 16:24:13 · 787 阅读 · 0 评论 -
程序的来源
一个C语言程序的生命周期从一个源程序开始的,程序员通过编辑器创建并且保存的文本文件,文件名是一个xxx.c。源程序是由0和1组成的位序列,8个位被组成一组,称为字节。大部分计算机系统都使用ASCII标准来表示文本字符。这种方式是在就是用了唯一一个单字节大小的整数值来表示每一个字符。xxx.c程序的表示方法采取了上述的方法。系统中的所有信息,包含磁盘的文件,内存中的程序,内存中存放的用户数据以及网络上发送的数据,都是由一串比特表示的。C语言程序与uinix操作系统联系密切,C语言从一开始就是一种作原创 2020-07-19 16:11:15 · 872 阅读 · 0 评论 -
C Primer Plus 读书笔记(六)
结尾C语言错误的替代循环限制条件的危险方面在于程序可以执行,但是它把数据放在不正确的地方,导致有时候无法执行。C语言中的结构和联合会使用一些运算符来识别单个成员,成员的运算符和结构,联合一起使用,间接成员运算符与指向结构或联合的指针一起使用。C语言有拓展的多字节字符和宽字符工具,每个字符都有一个基本的字符集,要求C的char类型足以操作这个集。C语言虽然可以看出C++的子集,但是在...原创 2019-09-22 21:36:35 · 286 阅读 · 0 评论 -
C Primer Plus 读书笔记(五)
第17章 高级数据显示C语言的内建数据类型有:简单变量,数组,指针,结构及其联合。还有一些常见的数据类型,如队列,列表,二叉搜索树。而ADT是面向问题而不是面向语言的一种解决问题的方法。列表,队列,二叉树是ADT的实例,在计算机程序中使用到,通过动态内存分配和连接结构来实现他们,但是有时候数组使实现他们更好的选择。...原创 2019-09-22 21:33:26 · 163 阅读 · 0 评论 -
C Primer Plus 读书笔记(四)
第13章 文件输入输出C语言对文件进行操作,有很多的函数可以进行调用,正确使用这些函数进行I/O,进行文件的输入输出对于C语言来说是必备的。大多数C语言提供低级I/O服务和高级I/O服务。第14章 结构与其他数据类型C语言中设计程序的最好步骤就是选择一个表示数据的好方法,在多数情况下,使用简单的变量和数组是不够的,C语言用结构变量进一步增强表达数据的能力。C语言的函数和指针,...原创 2019-09-22 17:41:27 · 278 阅读 · 0 评论 -
C Primer Plus 读书笔记(三)
第9章 函数函数是完成特定任务的代码程序的自包含模块,尽管C语言函数与其他语言的函数扮演相同的角色,但是细节上有所不同,比如printf()可以直接显示在屏幕上,还有些可以返回数据给程序使用。函数可以作为大型程序的模块,每个函数应该实现某个明确功能。使用参数可以向函数传递数值,并且通过关键字return返回一个数值。C语言还可以调用自己,称为递归,递归可以解决一些编程问题,但是也有缺点,...原创 2019-09-22 17:28:19 · 234 阅读 · 0 评论 -
C Primer Plus 读书笔记(二)
第5章 运算符,表达式和语句C有多种运算符,其中赋值运算符和算术运算符是比较常用的,一个运算符作用于一个或者多个操作数来产生一个值,表达式是运算符和操作数的组合。第6章 循环语句C语言当中有while和for循环,for循环主要针对可以初始化和更新,逗号运算符可以让for循环更新和初始化多个变量。在不多的场合需要用到条件退出循环,使用到的是do while。第7章 C语言控制语...原创 2019-06-23 10:11:29 · 791 阅读 · 0 评论 -
C Primer Plus 读书笔记(一)
第1章 概览C语言具有高效性,可移植性,灵活等优点,程序员可以直接操作指针,所以可以高效利用空间,但是操作指针容易出现失误,一旦不给空间分配空间,程序容易崩溃。程序的工作分为7步,指定程序的目标,设计该程序,编写程序,编译调试,运行程序,测试和调试程序,维护和修改程序。C语言是一种需要编译的语言,它通过编译器和连接器把源代码变成可执行的语言。C99标准不是为了增加C语言的特性,为了让C...原创 2019-06-23 10:03:55 · 1273 阅读 · 0 评论 -
俄罗斯方块的左右移动和向下移动
首先贴上左右移动的代码void horzMoveTetris(TetrisManager *manager, TetrisControl *control){ char x = manager->x; // 记录原列位置 removeTetris(manager); // 移走当前方块 control->direction == 0 ? (--ma...原创 2019-02-17 18:24:23 · 2892 阅读 · 0 评论 -
俄罗斯方块的旋转功能
首先我们贴上代码void rotateTetris(TetrisManager *manager, TetrisControl *control){ char ori = manager->orientation[0]; // 记录原旋转状态 removeTetris(manager); // 移走当前方块 // 顺/逆时针旋转 manager...原创 2019-02-17 18:21:10 · 3285 阅读 · 0 评论 -
俄罗斯方块的快速下坠实现
首先,先贴代码void dropDownTetris(TetrisManager *manager, TetrisControl *control){ removeTetris(manager); // 移走当前方块 for (; manager->y < ROW_END; ++manager->y) // 从上往下 { if ...原创 2019-02-17 18:16:57 · 1905 阅读 · 0 评论 -
俄罗斯方块游戏的消行实现
首先我们先贴上代码bool checkErasing(TetrisManager *manager, TetrisControl *control){ char count = 0; char k = 0, y = manager->y + 3; // 从下往上检测 do { if (y < ROW_END && ma...原创 2019-02-17 18:11:31 · 3351 阅读 · 0 评论 -
员工管理系统之修改数据
先贴代码int use_change(){ char *szNo = {0}; char *szSalary = {0}; int count = 0; int i = 0; int j = 0; int szcount = 0; int flag = 0; int fflag = 0; int num = 0; ...原创 2019-01-27 11:09:04 · 715 阅读 · 0 评论 -
员工管理系统之添加员工
先贴上代码int user_add(){ STAFF_T *pst = NULL; STAFF_T *p = NULL; int count = 0; int i = 0; char *szName = {0}; char *szNo = {0}; char *szSalary = {0}; int szcount = 0; int fla...原创 2019-01-27 10:34:11 · 1791 阅读 · 4 评论 -
员工管理系统之序号排序
同样我们先贴上代码int user_show(){ int i = 0; int j = 0; int k = 0; int count = 0; int t = 0; STAFF_T *a = NULL; STAFF_T *b = NULL; pNode* temp = NULL; pNode* p = NULL;...原创 2019-01-27 10:16:39 · 1216 阅读 · 0 评论 -
员工管理系统的真删除实现
先贴上代码int use_remove(){ char *szNo = {0}; char *szOrder = {0}; pNode *thead = NULL; int count = 0; int i = 0; int szcount = 0; int flag = 0; int fflag = 0; int...原创 2019-01-27 10:12:28 · 432 阅读 · 0 评论