
A.ANSI/ISO C
do2jiang
http://www.mythroad.net/modou
展开
-
函数参数的传递问题(指针的指针)
函数参数的传递问题(指针的指针)作者: first8612 发表时间: 2007-05-01 蒋冬冬修改 修改时间:2009-4-9 程序1:void myMalloc(char *s) //我想在函数中分配内存,再返回{ s=(char *) malloc(100);}void main(){ char *p=NULL; myMa原创 2009-04-13 13:08:00 · 5135 阅读 · 4 评论 -
C语言运算符 优先级口诀表
括号成员第一; //括号运算符[]() 成员运算符. ->全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%移位五,关系六; //移位运算符:> ,关系:> = 等于(与)不等排第七; //即== 和!=位与异或和位或; //这几个都是位运算:原创 2009-09-14 15:10:00 · 907 阅读 · 0 评论 -
C库函数字符串处理函数的C实现(常见)
1.strlen()实现: size_t strlen(const char *s) { size_t n; for(n = 0; *s != /0; s++) ++n; return n; }2.strcpy()实现; char *strcpy(char *s1, register const char *s2)原创 2009-09-14 20:09:00 · 983 阅读 · 0 评论 -
const 关键字提高代码健壮性
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书原创 2009-09-17 01:19:00 · 957 阅读 · 0 评论 -
解读linux对string.h函数的实现
/* file:string.h #ifndef _LINUX_STRING_H_ #define _LINUX_STRING_H_ /* We dont want strings.h stuff being user by user stuff by accident */ #ifdef __KERNEL__ #include /* for size_t原创 2009-10-15 02:50:00 · 2186 阅读 · 0 评论 -
STL剖析:从capacity()和resize()看容器的内存分配思想
这个blog来源于一个朋友提出的的问题 下面的代码想输出0-9,可不行。原因是iterStart居然等于iterEnd,为什么? list li; vector vi; for(int c=0;c vi.reserve(li.size()); copy(li.begin(),li.end(),vi.begin()); vector::iterator it原创 2009-10-18 13:07:00 · 2450 阅读 · 1 评论 -
Hash知识介绍
9.3.2 哈希函数的构造方法 什么是好的哈希函数:均匀的哈希函数 均匀的哈希函数——对于关键字集合中的任一个关键字,经哈希函数映象到地址集合中任何一个地址的概率是相等的,则称此类哈希函数是均匀的哈希函数。 常用的构造哈希函数的方法有:(1)直接定址法 (2)数字分析法 (3)平方取中法(4)折叠法 (5)除留余数法 (6)随机数法原创 2009-10-19 22:29:00 · 2369 阅读 · 1 评论 -
RAID技术简介
在计算机发展的初期,“大容量”硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都相当繁琐。1987年, Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《A Case of Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列方案)》原创 2009-11-05 21:43:00 · 1264 阅读 · 0 评论 -
DirectFB的学习
DirectFB概述:DirectFB是图形API存在于Frame Buffer层之上与高级图形管理层如GTK+等之下的。它可以以很小的系统资源占用来提供图形硬件加速功能,提供类如多路a通道渲染模型等高级图像操作。它不修改Linux内核,除了标准C库没有其他库的依赖。应用在了基于Linux系统的DTV显示系统的研发和其他有关Linux显示界面原创 2010-03-03 18:10:00 · 1859 阅读 · 0 评论 -
基于JRTPLIB库的RTP数据传输设计文档
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class原创 2010-03-02 12:00:00 · 2314 阅读 · 2 评论 -
C与shell混合编程
在linux上写程序、做网管的人,或多或少都会几种脚本。脚本语言灵活的变量类型、强大的正则表达式处理能力,再加上linux系统本身的管道、重定向以及丰富的命令行工具,让你编程起来游刃有余。 而C语言固然有种种优势,但不可否认,很多场合下,用脚本语言更为方便,比如我们将举例说明的对配置文件的处理。 先看看我们示例程序的任务: 假设我们有一个用c写的程序,它有一个配置文件 us原创 2010-03-09 15:18:00 · 2596 阅读 · 0 评论 -
Linux proc file system for module development
创建一个 proc 文件根据对 proc 文件的不同使用,内核提供了多种包装函数来创建一个 proc 文件。方法一:struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent)这是最直接,包装最少的创建方法。参数 name 是要创建的 proc 文件名原创 2010-04-02 17:39:00 · 1567 阅读 · 1 评论 -
Linux C 编程一站式学习
Linux C 编程一站式学习:http://learn.akae.cn/media/index.html 从编译器的使用基本c语言的使用到Linux系统调用和shell脚本 一应俱全,,,, go ahead!原创 2010-04-02 18:17:00 · 1337 阅读 · 0 评论 -
extern "C" 探究
extern "C" 探究原创 2010-08-12 21:58:00 · 998 阅读 · 0 评论 -
gcc链接.cpp和.c文件生成的.o库文件的时候,Linking error "undefined reference to `__gxx_personality_v0'"
gcc链接.cpp和.c文件生成的.o库文件的时候,Linking error "undefined reference to `__gxx_personality_v0'"原创 2010-08-12 22:17:00 · 2419 阅读 · 0 评论 -
打印自己的一段漂亮C程序
打印自己的一段漂亮C程序 #include int main(){ char *p ="#include %c int main(){char *p=%c%s%c; printf(p, 10, 34, p, 34);}"; printf(p, 10, 34, p, 34);}转载 2009-09-15 20:55:00 · 930 阅读 · 0 评论 -
判断回文算法的代码实现
#include using namespace std; bool Find ( char *ch, int n ) { if( n return true; else if( *ch == ch[n-1] ) Find( ch+1, n-2 ); //头尾同时收缩,所以减2 else原创 2009-09-15 19:36:00 · 1441 阅读 · 0 评论 -
String类的实现
#include #include using namespace std;class MyString{public: MyString(); ~MyString(){} MyString(const char* str); MyString(MyString & str); MyString & operator=(const MyString & str);原创 2009-09-15 16:55:00 · 1097 阅读 · 0 评论 -
ASCII码表
ASCII码表信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表,它的全称是“美国信息交换标准代码”。 八进制十六原创 2009-04-17 16:19:00 · 971 阅读 · 0 评论 -
变参函数的设计原理
理解va_list、va_start、va_arg、va_end原理及其使用方法 概述由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论. 定义大家先看几宏.在VC++6.0的include有一个stdar原创 2009-04-22 15:33:00 · 912 阅读 · 0 评论 -
#pragma详解
#pragma详解在#Pragma是预处理指令它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。原创 2009-04-22 15:21:00 · 1185 阅读 · 0 评论 -
浅析IO缓冲区
作者:华清远见高级讲师 曾宏安学习过编程的朋友都知道ANSI C里定义的标准I/O是一种带缓冲的高级磁盘I/O,目的是尽可能减少使用read和write系统调用的次数,从而提高I/O效率。标准I/O提供了3种类型的缓冲类型。全缓冲。在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。对驻留在磁盘上的文件的访问通常是由标准I/O库实施全缓冲的。行缓冲。在这种情况下,当在输入和输出中原创 2009-08-23 21:29:00 · 3768 阅读 · 0 评论 -
Void 空指针理解
void指针是空类型指针,它不指向任何类型,即void指针仅仅是一个地址,所以空类型指针不能进行指针运算,也不能进行间接引用(因为指针运算和间接引用都需要指针的类型信息)。例如:void*p; //仅仅表示p存放一个地址 p++; //error:+、-运算离不开指针类型 *p=20.5; //error:访问p指向的变量空间需要原创 2009-09-11 23:55:00 · 1773 阅读 · 0 评论 -
Structure Packing
Posted by: Russ KeldorphStructure packing is an extenstion to the C++ language supported by many compilers, including Microsofts. In our language, packing is achieved with either #pragma pack(N),原创 2009-09-12 00:01:00 · 1110 阅读 · 0 评论 -
sizeof(long double)
据我所知,double和long double都是ANSI C标准的浮点数。但ANSI C并未规定long double的确切精度。所以对于不同平台可能有不同的实现。有的是8字节,有的是10字节,有的是12字节或更多。一般来说long double的精度要高于double, 至少相等,就像int和long int一样。但同一平台也可能不一样,比如MS自己的C/C++/VC++就不一样。好原创 2009-09-13 16:04:00 · 5007 阅读 · 3 评论 -
钱能c++以 局部函数 引出 函数调用机制中疑惑解答
钱能c++ 局部函数 #includeint func1();int func2();void main(){func1();cout}int func1(){int n=12345;return n;}int func2(){int m;return m;}会输出什么呢?钱能的书中讲述输出 12345。测试结果VC6:Debug:-858993460Press any key t原创 2009-09-13 16:34:00 · 1205 阅读 · 1 评论 -
两个变量交换的扩展思考
首先声明,在面向对象盛行的时代里,我改用对象这两个词来指代最广泛的变量。 现在的变量就不一定只是一个整型或浮点型,甚至不是一个基本数据类型。我们 将在更广泛的意义上讨论对象交换的问题。 在前一篇文章 “ 关于两个对象交换的问题”(注意,名称已改)中,我们讨论了交换两个变量 的几种方法,并给出了形式化的公式。而在这一篇文章中,我们将讨论的是效率 与可行性的问题。(注:这个主题的想法,主要是受fa原创 2009-09-13 23:27:00 · 3009 阅读 · 0 评论 -
变参函数printf的理解
valist的用法,使用的头文件是stdarg.h一般的用法是这样(个人理解)va_list args; //声明变量va_start(args, fmt); //开始解析。args指向fmt后面的参数TYPE var = va_arg(args, TYPE); //取下一个参数并返回。args指向下一个参数va_end(args); //结束解析int vf(const char原创 2009-09-13 23:37:00 · 814 阅读 · 0 评论 -
C/C++ 字节对齐问题
VC中下面几个结构体大小分别是多少呢struct MyStruct { double m4; char m1; int m3; }; struct MyStruct { char m1; double m4; int m3; }; #pragma pack(push) //保存对齐状态 #pragma pack(16) //设置原创 2009-09-11 23:42:00 · 1389 阅读 · 0 评论 -
C++处理const类型变量与C的不同
const与#define最大的差别,Const在堆栈分配了空间,而#define只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命周期止于编译期:在实际程序中他只是一个常数、一个命令中的参数,没有实际的存在。 @ const常量存在于程序原创 2009-09-13 15:40:00 · 1194 阅读 · 0 评论 -
宏、函数、宏函数的区别
先说宏和函数的区别:1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编原创 2009-09-14 15:45:00 · 897 阅读 · 0 评论 -
String类的实现(转)
//代码参考C++primer.//String类的实现,清翔兔 06,Jan. #includeusing namespace std; class String{ friend ostream& operatorpublic: String(const char* str=NULL); //赋值构造兼默认构造函数(c转载 2009-09-15 17:02:00 · 980 阅读 · 0 评论 -
fopen与open区别
(一)1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速原创 2009-09-14 15:39:00 · 1452 阅读 · 0 评论 -
memcpy和memmove函数的比较与实现
区别:从DESCRIPTION看来,两者的功能基本相同,唯一不同的是,当 dest 和 src 有重叠的时候选用不同的函数可能会造成不同的结果。不妨写个小程序来测一下: 0 #i nclude 1 #i nclude 23 int main()4 {5 int i = 0;6 int a[10];7 8 for(i; i 9原创 2009-10-14 12:25:00 · 1368 阅读 · 0 评论