
C 高级
文章平均质量分 85
zqixiao_09
这个作者很懒,什么都没留下…
展开
-
Linux C 中断言assert()使用简介
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。所需头文件:#include 报告错误的条件:assert(0);void assert( int expression ); 参原创 2016-05-15 16:25:41 · 25529 阅读 · 0 评论 -
Linux C 数据结构---链表(单向链表)
上一篇我们讲到了线性表,线性表就是数据元素都一一对应,除只有唯一的前驱,唯一的后继。 线性表存储结构分为顺序存储、链式存储。 顺序存储的优点: 顺序存储的缺点: 链表就是典型的链式存储,将线性表L = (a0,a1,a2,........an-1)中个元素分布在存储器的不同存储块,成为结点(Node),通过地址或指针建立他们之间的练习原创 2015-12-25 12:56:07 · 9469 阅读 · 1 评论 -
Linux 应用---make及makefile的编写
Make 在我们做linux 开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。 而Makefile是Make读入的原创 2015-12-23 17:40:51 · 21509 阅读 · 1 评论 -
Linux C 内存管理
提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的! 内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效率。因此,我们要对C语言中的内存管理,有个系统的了解。 在C语言中,定义了4个内存区间:代码区;全局变量和静态变量区;局部变量区即栈区;动态存储区,即堆区;具体如下:原创 2015-12-22 17:58:20 · 4930 阅读 · 0 评论 -
Linux C 深入分析结构体指针的定义与引用
练习一、写出一个模拟时钟程序代码如下:#include #include #include #include typedef struct Clock{ int hour; int minute; int second;}Clock;update(Clock *p){ p->second++; if(p->second ==原创 2015-12-22 13:24:25 · 4928 阅读 · 2 评论 -
Linux C 函数指针应用---回调函数
(这里引用了知乎上一些知友的回答,感觉不错,有助于理解,这里引用作为借鉴,如有冒犯,烦请告知) 我们先来回顾一下函数指针,函数指针是专门用来存放函数地址的指针,函数地址是一个函数的入口地址,函数名代表了函数的入口地址。当一个函数指针指向了一个函数,就可以通过这个指针来调用该函数,可以将函数作为参数传递给函数指针。 那函数指针在我们实际编程中会起到怎样的作用呢?前一篇关于函数指针原创 2015-12-21 18:08:11 · 11432 阅读 · 4 评论 -
Linux下静态IP地址的设置及TFTP服务的搭建
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。 在谈TFTP之前,先简单讲一下Linux网络配置,网络中最重要的当然是IP地原创 2015-12-15 19:55:13 · 6448 阅读 · 0 评论 -
多进程 VS 多线程
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linu转载 2015-12-12 22:05:00 · 3222 阅读 · 1 评论 -
进程与线程的一个简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停原创 2015-12-12 21:26:53 · 2505 阅读 · 2 评论 -
Linux C学习--getline()函数
getline()函数是什么?百度百科这样解释: getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。linux标准C中使用条件:#define _GNU_SOURCE#include 函数声明:ssize_t ge原创 2015-12-10 20:01:18 · 52882 阅读 · 3 评论 -
Linux内核代码风格
Linux内核代码风格 这是一个简短的文档,描述了linux内核的首选代码风格。代码风格是因人而异的,而且我不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望绝大多数其他代码也能遵守这个风格。请在写代码时至少考虑一下本文所述的风格。 首先,我建议你打印一份GNU代码规范,然后不要读它。烧了它,这是一个具有重大象征性意义的动作原创 2015-12-04 19:45:47 · 2783 阅读 · 1 评论 -
Linux环境下段错误的产生原因及调试方法小结
LZ看到一篇关于Linux环境段错误的产生原因的文章,感觉不错,但不是C博客里面,不知如何转载,这里转贴过来,感谢原博主,文章如下:Linux环境下段错误的产生原因及调试方法小结1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误”的转载 2015-12-02 11:44:41 · 1814 阅读 · 0 评论