- 博客(24)
- 收藏
- 关注
原创 MP3/WAV 播放
一.编译libmad 1.先下载压缩包到本地,并解压 tar -xvzf libmad-0.15.1b.tar.gz -C ./2.进入源码目录并配置编写一个配置文件,便于 文件内容如下./configure CC=arm-linux-gcc --host=arm-linux --build=i686-pc-lin
2014-07-19 13:38:28
1618
原创 错误处理函数
ferrorferror()用来检查参数stream所指定的文件流是否发生了错误情况未出错,返回0;出错,返回非零值perror将上一个函数发生错误的原因输出到标准错误(stderr). 参数s所指的字符串先打印, 后面加上错误的原因字符串. 此错误原因依照全局变量errno来决定
2014-07-19 12:41:39
873
原创 运算符 结晶
逻辑运算符优先级: ! >> && >> ||短路规则:|| 从左向右开始计算,当遇到为真条件时停止计算, 整个表达式为真;所有条件为假时,表达式为假&& 从左向右开始计算,当遇到为假条件时停止计算, 整个表达式为假;所有条件为真时,表达式为真C中逻辑符 !只认得0,见了0就返回1.当其作用
2014-07-17 17:24:59
749
原创 类型 转换
当表达式中存在有符号类型和无符号类型时,所有的数都自动转换为无符号类型1.当出现在表达式时,有符号和无符号的char和short类型将自动转化为int2.在K&RC下,但不是当前的C下,float将自动转换为double类型3.在包含两种数据类型的任何运算里,两个值都被转换成两种类型里较高的级别4.类型级别从高到低的顺序是long double、do
2014-07-17 16:31:59
548
原创 输入 输出
字符返回:来自输入设备的下一个字符返回:成功返回下一个字符,出错或者达到文件结尾返回EOF虽然函数被定义为整型数,但仅用其低八位scanf返回:成功返回读入项目的个数检测到"文
2014-07-17 16:05:56
709
原创 结构体 变迁
struct结构体是由基本数据类型构成、并用一个标识符来命名的各种变量的组合格式struct 结构名 { 类型 变量名; 类型 变量名; ......}结构变量;结构名是结构的标识符结构 typedef 给结构体起别名结构数组
2014-07-17 09:46:43
1009
原创 进制 转换
常见进制二进制 数据由0和1数码表示,基数为2逢二进一,借一当二八进制一种计数法,采用0,1,2,3,4,5,6,7数码表示,基数为8逢八进一,借一当八八进制开头要以数字0开头八进制仅表示整数十六进制数据的一种表示方法,采用 0--9,A--F数码表示,字母不区分大小写,基数为16逢十
2014-07-16 22:13:31
940
原创 字符串 下
查找1.单字符分割 strchr:查找字符c在字符串string中首次出现的位置,NULL结束符包含在其中返回一个指针,指向字符c在字符串string中首次出现的位置,若没查找到,则返回NULLstrrchr:查找字符c在字符串string中最后一次出现的位置,反序搜索,包含NULL结束符返回一个指针,指向字符c在字符串
2014-07-16 21:26:49
745
原创 字符串 上
字符串从概念上讲,C中没有字符串数据类型C中使用字符数组来模拟字符串C中字符串是以‘\0’结束的字符数组C中字符串可以分配于栈空间、堆空间或者只读存储区C中字符串常量表示一块包括字符串中所有字符以及一个空字符('\0')的内存区域的地址字符串长度就是字符串所包含字符的个数C中字符串长度指
2014-07-16 21:05:58
809
原创 随机数
伪随机数使用一个确定性的算法计算出来的似乎是随机的数序计算机的随机数都是由伪随机数(小M多项式序列)生成的,其中产生每个小序列都有一个初始值,即随机种子.(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了.)randrand()内部实现
2014-07-16 20:23:10
655
原创 递归
递归递归的本质为函数内部在适当的时候调用自身递归条件:1.遵循一定的规律2.有一个结束递归的条件递归本质过程:函数f(1)调用函数f(2)函数f(2)调用函数f(3)函数f(3)调用函数f(4)当f(4)不满足条件f(4)函数结束,执行f(3)函数未结束的内容f(3)函数结束,执行f(2)函数未结束的内容
2014-07-16 17:58:26
425
原创 原码、补码和反码
计算机系统,数值一律用补码来存储.主要原因:补码,可以将符号位和其它位统一处理原码概念:一种计算机中对数字的二进制定点表示方法编码规则:符号位0表示正,1表示负.数值部分用该数绝对值的二进制数表示假设:机器长为8位符号01111111+1270 0 0 0 0
2014-07-16 17:48:47
511
原创 静态、动态库制作使用
本质 库是一种可执行代码的二进制格式,可以被载入内存中执行 库分静态库和动态库两种.一.概念静态函数库 库的名字一般是libxxx.a 函数库的链接是在编译时期完成 所有相关对象与牵涉的函数库被链接合成一个可执行文件 运行时,与函数库再无瓜葛 动态函数库 库的名字一般是li
2014-07-16 17:36:12
810
原创 .c和.h文件
可以多次声明,但是不能多次定义对于一个项目,我们应该要很好的处理众多的.c和.h文件1.通过头文件调用库功能:#include 在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可2.人为定义的.h文件:#include "avformat.h"一般提供了结构体的声明或者定义,函数的声明.枚举的声明或
2014-07-16 17:21:39
1025
原创 类型 处理
类型 打印unsigned 无符号类型%u打印变量,绝对不会出现负数八进制和十六进制总是作为无符号类型处理l 修饰符只对用于整数的格式码有意义size_t 为了系统之间的移植而定义32位系统上, 定义为 unsigned int64位系统上,定义为 unsigned long
2014-07-16 17:13:33
511
原创 函数 (下)
函数类型C中函数有自己特定的类型函数的类型由返回值,参数类型和参数个数共同决定 例如:int add(int i ,int j )的类型为int(int,int)C中通过typedef为函数类型重命名 typedef type name(parameter list)例如: typedef int f(in
2014-07-16 16:39:14
492
原创 函数 (上)
函数的由来模块化程序设计C的模块化面向过程的程序设计 面向过程是一种以过程为中心的编程思想 首先将复杂的问题分解为一个个容易解决的问题 分解后的问题可以按照步骤一步步完成 函数是面向过程在C中的体现 解决问题的每个步骤可以用函数来实现声明和定义
2014-07-16 16:26:03
479
原创 内存管理的艺术
基于唐老师 "C语言专题" 总结C中的一切操作都是基于内存的变量和数组都是内存的别名,如何分配这些内存由编译器在编译期间决定 定义数组的时候必须给出数组长度 而数组长度是在编译期间就必须决定需求: 程序运行的过程中,可能需要使用一些额外的内存空间malloc、freemalloc和free用于执行动态内存分配和
2014-07-16 15:30:40
562
原创 指针和数组(上)
指针 指针在本质上是一个变量 指针需要用一定的内存空间 指针用于保存内存地址的值*号意义 指针声明时,*号表示所声明的变量为指针 指针使用时,*号表示取指针所指向的内存空间中的值指针声明指针初始化指针是C中一种特殊的变量
2014-07-16 09:34:59
499
原创 编译预 处理
预编译 处理所有的注释,以空格代替 将所有的#define删除,并且展开所有的宏定义 处理条件编译指令,#if、#ifdef、#elif、#else和#endif 处理#include,展开被包含的文件 保留编译器需要使用的#pragma指令 gcc -E file.c -o
2014-07-16 07:37:37
497
原创 符号的技巧
Don Hsi-Yun Yang注释 编译器会在编译过程删除注释,但不是简单的删除而是用空格代替 编译器认为双引号括起来内容都是字符串,双斜杠也不例外 “/***/”型注释不能被嵌套 方式 /* ..... */ // 出色的注释 注释应该准确易懂,防止二义
2014-07-15 22:34:15
520
原创 关键字的秘密
数据类型数据类型可以理解为固定内存大小的别名数据类型是创建变量的模子类型本质bool类型 C99#includestdbool.h> 变量本质变量是一段实际连续存储空间的别名程序中通过变量来申请并命名存储空间通过变量的名字可以使用存储空间i = 3;&i = 2000;
2014-07-15 21:40:50
612
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人