随笔分类 -  05.Linux-C

摘要:程序的 编译 和 链接 要先总结 make 和 makefile,就需要先了解下面这个过程: make 和 makefile 能干啥? 一个工程,那么多源文件,一堆的 cpp 和 h 文件,怎么编译啊?编译一个大型工程,如果Rebuild可能就需要好几个小时,甚至十几个小时,那我们就可能要问了。 好 阅读全文
posted @ 2016-07-18 16:20 52php 阅读(3085) 评论(0) 推荐(1)
摘要:gcc 是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、 Java),可以说gcc是GNU编译器集合。 g++ 是C++编译器。 cc 是 Unix 阅读全文
posted @ 2016-07-18 16:19 52php 阅读(20914) 评论(0) 推荐(4)
摘要:平时我们写程序都必须 include 很多头文件,因为可以避免重复造轮子,软件大厦可不是单靠一个人就能完成的。但是你是否知道引用的那些头文件中的函数是怎么被执行的呢?这就要牵扯到链接库了! 库有两种,一种是 静态链接库,一种是 动态链接库,不管是哪一种库,要使用它们,都要在程序中包含相应的 incl 阅读全文
posted @ 2016-07-18 16:16 52php 阅读(52126) 评论(0) 推荐(6)
摘要:操作系统:Ubuntu 12/14 1、下载书中的源代码:点击下载 2、编译 报错: can,t find -lbsd 解决办法: 添加 libbsd.a 的静态链接库 3、继续编译 4、在编译成功的基础上,安装 apue.h 文件及其对应的静态链接库 libapue.a mac中,拷贝头文件 su 阅读全文
posted @ 2016-07-18 16:15 52php 阅读(2730) 评论(0) 推荐(2)
摘要:介绍swoole扩展,从源码的下载,环境依赖,编译参数配置,常见编译问题,安装,配置等内容。期间还会介绍: Linux发行版本的选择 不同版本内核的差异 gcc/g++/clang 3种编译器介绍 autoconf、cmake的介绍 ldconfig介绍 nm/strip介绍 生成libswoole 阅读全文
posted @ 2016-07-18 16:05 52php 阅读(427) 评论(0) 推荐(0)
摘要:函数库是为代码复用建立的,将同一类型,需要在不同的程序里使用的函数放置在一起,就组成了一个函数库。如 C 语言的标准库,它集合了开发者常用的函数。开发者自行编写的函数也可以组成函数库,通常称之为自定义函数库。C 语言的函数库以源代码的形式放在头文件里,较大的函数库可能会用到多个文件,因此涉及到编译的 阅读全文
posted @ 2016-07-18 15:42 52php 阅读(538) 评论(0) 推荐(0)
摘要:在设计函数时需要遵循一些基本原则,因为影响到函数的执行效率和可用性。函数是代码复用的基础,一个健壮的函数或由函数组成的函数集可以在多个程序中使用。C语言标准库里存放的就是这样的函数,这些函数被放置在头文件中,使用时将它包含在程序内即可。 5.5.1 参数 和 通用函数 通用函数 是指能够复用的函数, 阅读全文
posted @ 2016-07-18 15:41 52php 阅读(262) 评论(0) 推荐(0)
摘要:递归函数 是能够直接或通过另一个函数间接调用自身的函数,调用自身的方法称为递归调用。递归调用的本质是使用同一算法将复杂的问题不断化简,直到该问题解决。 例如求斐波那契数列的某一项算法适用于递归函数实现。斐波那契数列指的是这样一个数列: 0, 1, 1, 2, 3, 5, 8, 13, 21 ... 阅读全文
posted @ 2016-07-18 15:40 52php 阅读(723) 评论(0) 推荐(0)
摘要:函数通过调用获得程序的控制权,函数的参数是调用者与函数的数据接口。函数可以定义一个或多个参数,也可以省略参数,调用时将与参数的数据类型相匹配的数据置于参数列表中,即可在函数体内使用。参数的调用有多种形式,对函数的影响也有不同的结果。 5.3.1 形式参数 与 实际参数 形式参数 是 接口数据的目的地 阅读全文
posted @ 2016-07-18 15:34 52php 阅读(596) 评论(0) 推荐(0)
摘要:作用域规则是指代码或数据的有效使用范围。C语言将函数作为独立的代码块,函数之间不能相互访问其内部的代码或数据。函数间数据的传递只能通过接口实现。但是,变量的定义方法可改变函数的作用域规则,可将变量分为 局部变量 和 全局变量 两种。 5.2.1 局部变量 在函数体内定义的变量称为 局部变量,局部变量 阅读全文
posted @ 2016-07-18 15:33 52php 阅读(705) 评论(0) 推荐(0)
摘要:4.10.1 建立播放列表 数据字典 该代码设置了一个主控制循环,由主控循环反复输入控制提示信息,并等待用户的输入。用户可输入指定的数字来执行对应的操作。 输入数字 1,程序提示键入文件名,文件名并不是按列表的顺序存放在字符数组 f_list 中,而是在遍历数组 f_list 寻找行首为 0 的空位 阅读全文
posted @ 2016-07-18 15:22 52php 阅读(461) 评论(0) 推荐(0)
摘要:C 语言是结构化语言,它的主要结构成分是函数。函数被作为一种构件,用以完成程序中的某个具体功能。函数允许一个程序的各个任务被分别定义和编码,使程序模块化。本章介绍 C 语言函数的设计,如何用函数分解程序的各个功能,如何使用函数构成模块化程序,以及代码复用的基本思想。 5.1 函数说明 与 返回值 函 阅读全文
posted @ 2016-07-18 15:22 52php 阅读(325) 评论(0) 推荐(0)
摘要:指针变量可以指向另一个指针变量,这种操作并不是将一个指针变量所指向的内存地址传递给另一个指针变量,而是定义一种指向指针类型的指针变量,可将其称为双重指针。双重指针的定义形式为: 数据类型 **变量名; 其中使用 2 个 间接运算符,如下例所示: 代码中定义了双重指针变量 dpi,将双重指针变量指向指 阅读全文
posted @ 2016-07-18 15:21 52php 阅读(315) 评论(0) 推荐(0)
摘要:指针变量可指向任何类型的变量,在处理过程中,指针变量指向的变量通过传递变量的地址来实现,指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的。否则,写入内存单元的值将使得已存放的数据或程序丢失。应使用变异系统提供的标准函数来实现地址分配。 GCC编译器支持动态分配内存的函数 malloc 阅读全文
posted @ 2016-07-18 15:20 52php 阅读(1593) 评论(0) 推荐(0)
摘要:指针数组是一种特殊的数组,这类数组存放的全部是同一数据类型的内存地址。指针数组的定义形式为: 数据类型 *数组名[长度]; 例如: 指向常量的指针,必须用 const 定义为常量指针,以避免修改指针所指向的数据造成程序错误。由于 [] 符号比间接运算符 * 的优先级要高,所以首先是数组形式 c[4] 阅读全文
posted @ 2016-07-18 15:20 52php 阅读(206) 评论(0) 推荐(0)
摘要:数组在内存中以顺序的形式存放,数组的第一个存储单元的地址即数组的首地址。对一维数组来说,直接引用数组名就能获得该数组的首地址。指针变量可以存放于其内容相同的数组首地址,也可以指向某一具体的数组元素。通过这种方式,多维数组也被看作一维数组来操作,简化了数组的操作方式。 4.6.1 指针 与 一维数组 阅读全文
posted @ 2016-07-18 15:19 52php 阅读(368) 评论(0) 推荐(0)
摘要:指针变量是包含内存地址的变量。一般的变量直接包含一个特定的值,而指针变量包含的是某一特定数据类型的内存地址。普通变量直接引用其中的值,指针变量则间接引用所指向内存地址中的值。指针变量在使用前需要声明与初始化。 4.5.1 指针变量的定义 指针变量定义时,需要指定所指向的数据类型。声明指针变量的一般形 阅读全文
posted @ 2016-07-18 15:17 52php 阅读(1039) 评论(0) 推荐(0)
摘要:在程序中声明变量后,编译器就会为该变量分配相应的内存单元。也就是说,每个变量在内存会有固定的位置,有具体的地址。由于变量的数据类型不同,它所占的内存单元数也不相同。如下列声明了一些变量和数组。 在程序编译时,编译器将制定这些变量和数组所需要的存储空间长度。程序运行中,则由操作系统为这些变量和数组分配 阅读全文
posted @ 2016-07-18 15:00 52php 阅读(342) 评论(0) 推荐(0)
摘要:多维数组是指拥有多组小标的数组,维数的限制有具体编译器决定。多维数组的一般声明形式为: 数据类型 数组名[长度1][长度2]......[长度n]; 数组的总长度等于每组下标长度的乘积。多维数组使用连续的存储空间,编译器在为多维数组分配内存单元时,首先从 “数组[0][0]......[0]” 开始 阅读全文
posted @ 2016-07-18 14:59 52php 阅读(272) 评论(0) 推荐(0)
摘要:C 语言允许使用多维数组,即使用多组小标的数组,二维数组是最常用的多维数组。多维数组在内存中存放数据的顺序与一维数组相同,使用连续的存储单元。 4.2.1 二维数组的一般形式 二维数组的一般声明形式为: 数组类型 数组名[长度1][长度2]; 数组的总长度等于 长度1 与 长度2 的乘积。如下列所示 阅读全文
posted @ 2016-07-18 14:58 52php 阅读(472) 评论(0) 推荐(0)