
C Development
文章平均质量分 79
远有青山
山外青山楼外楼
展开
-
函数指针
函数指针函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用转载 2013-03-31 23:14:17 · 758 阅读 · 0 评论 -
结构体对齐详解
1 -- 结构体数据成员对齐的意义许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一种处理器,它每次读写内存的时候都从某个8倍数的地址开始,转载 2012-12-21 16:25:54 · 465 阅读 · 0 评论 -
自动存储管理
自动存储管理http://www.oracle.com/technetwork/cn/articles/sql/11g-asm-094058-zhs.htmlLinux 文件系统的性能比较常用命令:适用范围: 10TB 如何对应更快原创 2012-12-19 15:49:18 · 646 阅读 · 0 评论 -
ASCLL码表
ASCLL码表ASCII 码使用指定的 7位或 8 位二进制数组合来表示128或 256 种可能的字符。标准 ASCII码使用 7 位二进制数来表示所有的大写和小写字母,数字 0到 9、标点符号,以及在美式英语中使用的特殊控制字符。目前许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII码允许将每个字符的第 8 位用于确定附加的 128个特殊符号转载 2012-12-17 09:53:07 · 12369 阅读 · 0 评论 -
深入理解指针函数
1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。转载 2012-12-11 19:08:29 · 898 阅读 · 0 评论 -
指向结构体的指针
指向结构体的指针 在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构体指针是极常见的。下面是一个例子:typedef struct{ char name[21]; char city[21]; char state[3];} Rec;typedef Rec *RecPointer;RecPointer r转载 2012-12-11 16:10:17 · 59068 阅读 · 1 评论 -
va_start(),va_arg(),va_end()
(一)写一个简单的可变参数的C函数下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏:void va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr );va在这里是转载 2012-12-07 11:32:59 · 4057 阅读 · 0 评论 -
Linux 动态库剖析
简介: 动态链接的共享库是 GNU/Linux® 的一个重要方面。该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用。本文研究了创建和使用静态库的过程,详细描述了开发它们的各种工具,并揭秘了这些库的工作方式。库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法 — 即,转载 2012-12-07 09:49:06 · 542 阅读 · 0 评论 -
VC++动态链接库编程之基础慨念
http://dev.yesky.com/430/2142930.shtml 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿转载 2012-12-06 19:35:51 · 622 阅读 · 0 评论 -
关于c语言中变量赋值问题
局部变量:也叫内部变量,是在一个函数内部定义的,其作用域限制在所定义的函数中,不可在其它函数中使用,而该函数也不可以使用其它函数所定义的局部变量。函数的形式参数被认为是局部变量,在函数被调用时才会在内存的动态存储区中开辟存储单元。函数调用结束时,与此函数内的其他局部变量一样释放所占有的内存单元。局部变量的存储类型可以通过类型标示符auto和static来规定。利用auto定义的变量存放在动态存储区转载 2012-12-05 09:43:12 · 5033 阅读 · 0 评论 -
absread和abswrite以及磁盘的格式化
absread和abswrite以及磁盘的格式化int absread(int drive,int num,int sectnum,void *buf) 功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。 参数:drive=0对应A转载 2012-11-19 11:36:51 · 1981 阅读 · 0 评论 -
C的|、||、&、&&、异或、~、!运算
位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 其中,按位取反运算符是单目运算符,其余均为双目运算符。 位运算符的优先级从高到低,依次为~、&、^、|, 其中转载 2013-01-09 13:19:29 · 811 阅读 · 0 评论 -
linux 下C函数部分
isalnum(测试字符是否为英文或数字)相关函数isalpha,isdigit,islower,isupper表头文件#include定义函数int isalnum (int c)函数说明检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c) || isdigit转载 2013-01-29 13:32:33 · 2024 阅读 · 0 评论 -
汇编 编译环境
常用命令数据传送指令一 通用数据传送指令指令英文全拼翻译MOVMove传送PUSHPush onto the stack进栈POPPop from the stack出栈XCH转载 2013-04-01 10:08:58 · 1583 阅读 · 0 评论 -
动态内存管理函数:alloc.ha
1.1 brk()--重置数据段存储空间函数第1章 动态内存管理函数:alloc.h动态内存管理函数在程序执行过程中为程序中的数据分配内存,这些函数都通过指针来指明内存地址。最常用的动态内存管理函数是stdlib中的malloc()、calloc()和free(),这组函数在同一数据段中分配内存,当程序中动态分配的内存很多,以至于跨跃数据段分配时,用到本章中的函数,其实转载 2013-02-22 17:26:09 · 1015 阅读 · 0 评论 -
brk和sbrk及内存分配函数详细
sbrk/brk 从堆中分配空间,本质是移动一个位置,向后移就是分配空间,向前移就是释放空间。 sbrk用相对的整数值确定位置,如果这个整数是正数,会从当前位置向后移若干字节,如果为负数就向前若干字节。在任何情况下,返回值永远是移动之前的位置 brk用绝对的地址指定移到哪个位置。 #include #include int main(){转载 2013-02-22 17:38:59 · 1440 阅读 · 0 评论 -
标准IO与文件IO 的区别
标准IO与文件IO 的区别作者:王姗姗,华清远见嵌入式学院讲师。先来了解下什么是标准IO以及文件IO。标准IO:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。标准IO库处理很多细节。例如缓存分配,以优化长度执行IO等。标准的IO提供了三种类型的缓存。(1)全缓存:当填满标准IO缓存后才进行实转载 2013-02-22 15:18:50 · 682 阅读 · 0 评论 -
原子操作(atomic operation)
深入分析Volatile的实现原理引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上I转载 2013-02-21 09:53:19 · 27171 阅读 · 4 评论 -
浅谈C中的malloc和free
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!转载 2013-01-31 17:00:29 · 543 阅读 · 0 评论 -
const
原帖及讨论:http://bbs.bccn.net/thread-186615-1-1.html*/ --------------------------------------------------------------------------------------*/ 出自: 编程中国 http://www.bccn.net*/ 作者: neverTheSame E-转载 2013-01-31 17:14:39 · 429 阅读 · 0 评论 -
SOCKS 5协议详解
标题:SOCKS 5协议详解 作者:李洪洲 2002-06-10 19:12 文章摘要: 该文档描述了一个应用层的用于穿越IP网络防火墙的协议。这种穿越的安全性是高度依赖于正规的认证和正规执行方法提供的有效封装,以及在SOCKS客户端和SOCKS服务端所选择的安全性,还有管理员对认证方法选项所作的小心周密的考虑。 --------------------转载 2013-01-29 13:25:37 · 9138 阅读 · 0 评论 -
Ansi和Unicode字符串区别
Ansi和Unicode字符串区别1.1 使用字符串结构常常使用传统C语言的程序员比较喜欢用如下的方法定义和使用字符串: char *str = { “my first string” }; // ansi字符串 wchar_t *wstr = { L”my first string” }; // unicode转载 2013-01-29 13:17:00 · 1536 阅读 · 0 评论 -
缓存溢出Buffer Overflow
缓存溢出(Buffer overflow),是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符数来填满一个域,通常是内存区地址。在某些情况下,这些过量的字符能够作为“可执行”代码来运行。从而使得攻击者可以不受安全措施的约束来控制被攻击的计算机。缓存溢出(或译为缓冲溢出)为黑客最为常用的攻击手段之一,蠕虫病毒对操作系统高危漏洞的溢出高速与大规模传播均是利用此技术。转载 2013-01-29 09:51:39 · 10172 阅读 · 0 评论 -
C的xml编程-libxml2
C的xml编程-libxml2http://blog.youkuaiyun.com/luluxu/article/details/6367573http://www.blogjava.net/wxb_nudt/archive/2007/11/28/161340.html库http://rpmfind.net/linux/rpm2html/search.php?query转载 2012-11-16 17:41:22 · 764 阅读 · 0 评论 -
sscanf正则表达式
C语言 -sscanf正则表达式2011-01-07 00:18来源:http://blog.chinaunix.net/u/21684/showart_499274.html表头文件 #include(stdio.h)定义函数转载 2011-10-09 22:28:36 · 929 阅读 · 0 评论 -
C陷阱与缺陷
http://blog.youkuaiyun.com/milan25429688/article/details/328944 中国源码网转载 2011-10-17 20:01:30 · 518 阅读 · 0 评论 -
C字符串处理函数
void *memccpy (void *dest, const void *src, int c, size_t n);从src所指向的对象复制n个字符到dest所指向的对象中。如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置;否则返回NULL转载 2011-10-09 15:08:53 · 666 阅读 · 0 评论 -
时间系统
UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。 目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以後,负值则表示1970年以前。我们可以很简单地计算出转载 2011-10-08 15:16:47 · 515 阅读 · 0 评论 -
GDB调试程序
用GDB调试程序HomeAcademicComputingGNU NotesDSEC ServerWild JournalPhotos说明从优快云的网站上找到的GDB使用说明。原文标题:用GDB调试程序作者:haoel转载 2011-10-14 11:46:34 · 502 阅读 · 0 评论 -
gvim/vim使用经验
我发现在写TEX 文档时候,使用\begin{verbatim}\end{verbatim}环境时,编译出来的pdf文件没有把Tab转成空格。 只要命令 set expandtab 即可,这样在输入一个Tab时就相当于输入四个空格。 转载别人的使用经验. 我在搜索 T转载 2011-10-13 08:59:03 · 6212 阅读 · 0 评论 -
C FILE
文件的基本概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的转载 2011-09-30 10:27:15 · 687 阅读 · 0 评论 -
C语言中的time函数
http://www.examda.com/ncre2/C/jichu/20100825/08150493.html C/C++中的日期和时间 头文件 time.h 函数用途 函数名 得到处理器时间 clock 得到时间差 difftime转载 2011-10-12 09:50:38 · 574 阅读 · 0 评论 -
vi 图文使用
1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲转载 2011-10-11 17:11:51 · 1166 阅读 · 0 评论 -
exit、return、_exit、_Exit这几个函数的区别
1、exit函数和return函数的主要区别是:1)exit用于在程序运行的过程中随时结束程序,其参数是返回给OS的。也可以这么讲:exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。main函数结束时也会隐式地调用exit转载 2011-10-11 14:57:08 · 2809 阅读 · 0 评论 -
time_t和DATE之间的相互转化
两者的差别: time_t是整型,存储着至1970-1-1 00:00:00的时差(秒数)(UTC时间) DATA是浮点型,整数部分存储着至1899-12-30 00:00:00的时差(天数)(本地时间),小数部分存储着时分秒。(BTW:DATA可以表示基点之前的时间转载 2011-10-09 00:36:18 · 1810 阅读 · 0 评论 -
stdarg.h详解
读Linux内核中的vsprintf函数的时候遇到了C语言的可变参数调用,查了挺多资料还是这篇比较详细,而且自己验证了下,确实如此 (一)写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的 C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg(转载 2011-11-08 10:43:53 · 20039 阅读 · 7 评论 -
Linux内核 monolithic Kernel
进程管理(process management)、 1 定时器(timer)、 2 中断管理(interrupt management)、 3 内存管理(memory management)、 4 模块管理(module management)、 5 虚拟文件系统接口(VFS layer)、 6 文件系统(file system)、 7原创 2011-12-02 11:42:49 · 1491 阅读 · 0 评论 -
动态库的调用技术基础
较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序的EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过转载 2012-11-01 14:40:24 · 862 阅读 · 0 评论 -
函数调用约定
函数调用约定前言在C语言中,假设我们有这样的一个函数:int function(int a, int b);调用时只要用result = function(1, 2);这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,转载 2012-08-27 15:08:14 · 553 阅读 · 0 评论 -
字节序问题
htons(), ntohl(), ntohs(),htons() 函数 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数。网络字节顺序与本地字节顺序之间的转换函数: htonl()--"Host to Network Long"转载 2012-08-20 14:09:47 · 2665 阅读 · 1 评论