- 博客(37)
- 资源 (3)
- 收藏
- 关注
原创 xml-rpc-c学习有感—c语言不定参函数的实现
最近在看xmlprc-c的demo,突然发现在xmlrpc_client_call()xmlrpc_client_call(xmlrpc_env * const envP, const char * const server_url, const char * const method_name,
2012-06-04 20:42:34
2474
转载 C语言中auto,register,static,const,volatile的区别
1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static 常见的两种用途:
2012-05-22 14:56:00
505
转载 内存对齐的规则以及作用
首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ;10 int b ;11 short c ;12 };13 14 struct st2
2012-01-10 20:05:27
412
转载 exit和return区别
exit(0) 表示程序正常, exit(1)/exit(-1)表示程序异常退出exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..exit
2011-12-26 11:41:22
346
转载 C++中的static用法(面向过程+面向对象)
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#includ
2011-12-25 20:48:52
395
转载 static在C语言中得用法(面向过程)
1.先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.下面是a.c的内容: char a = 'A'; // global variablevoid msg(){printf("Hello\n
2011-12-25 20:34:17
445
转载 C程序的格式字符串
在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。各项的意义介绍如下: 1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示: 表示输出类型的格式字符 格式字符意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进
2011-12-17 19:47:53
438
转载 回车(CR)与换行(LF), '/r'和'/n'的区别
回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,
2011-12-15 15:52:14
394
转载 转义字符的完整诠释
转义字符的完整诠释转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。 转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS)
2011-11-24 12:01:36
648
转载 hostent结构体
使用这个东西,首先要包含2个头文件:#include #include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如" www.google.com","wpc"等等。传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。struct hostent {
2011-11-08 13:38:29
493
原创 C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:1#ifdef __cplusplus2extern "C" {3#endif4 5/*...
2011-10-28 16:32:51
458
转载 其实大多数人没必要买iphone5
我是从07年1234代一直开始使用的老用户,04年我涉足电子产品的生意,从世界上第一台摩托罗拉诺基亚到象征贵族地位的VERTU世界上稍微靠谱点的手机没有我没玩过的,电脑和网络方面我99年跟着父亲学习管理过服务器,04年初中毕业暑假自己租了第一台服务器注册了第一个域名。高中我做过各
2011-10-11 00:47:24
5823
1
转载 C++ 枚举类型的思考
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess { Read
2011-07-31 01:49:38
380
转载 分享我的书架:一个五年程序员的学习观
去年写了一篇文章《一个工作3~4年程序员的年度学习计划》,里面列出了一些计划阅读的书目。一年过去了,进度很一般。不过也许这个计划本身就有问题。今天看了李开复发的一篇微博,很有感慨:“天下古今之庸人,皆以一惰字致败。天下古今之才人,皆以一傲字致败。 -- 曾国藩”我是一
2011-07-31 01:47:00
733
转载 Windows与Linux系统下的库文件介绍
什么是库 库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的。它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 无论在Windows平台还是在Li
2011-07-31 01:44:19
686
转载 PE文件说明
PE 的意思就是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自 Unix的 Coff (common object file format)文件格式。 "port
2011-07-31 01:41:48
557
转载 C++ 枚举类型的思考
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess { Read = 0
2011-07-28 17:11:43
419
转载 windows消息类型
<br /><br />MFC 消息类型:三种<br /> <br /> <br />1、命令消息(WM_COMMAND) <br />所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 <br /><br />2、Window消息(WM_xxx) <br />所有派生自 CWnd 的类都有资格接受 WM_xxx。 <br /><br />3、控件消息(WM_NOTIFY) <br />控件向其父窗口通知消息。 <br /><br />消息处理:<br /><br />1
2011-05-13 22:53:00
5802
转载 DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC
<br />最近有些朋友在看《深入浅出MFC》的时候,被第三章的几个宏给卡住了,记得我第一次看此书时,也被这几个宏给卡住。当然真正卡人的其实是第一个,也就是DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC。我做了一个详解,供同样被卡住的朋友做个参考:)说明:这两个宏的主要目的,是在所指定的class(比如CView)的声明和实现里,加上一些静态成员函数和静态成员变量。所以,不要管“/”这个换行标志,就把里面的每一句话当作是在类里的声明或者是实现。另外,“##”和"#"符号我就不不赘述了
2011-05-12 13:14:00
843
转载 #和##的用法
<br />单井号(#)<br />把传递过来的参数当成字符串进行替代<br />如下示例:<br />程序代码#define display(name) printf(""#name"")<br />int main() {<br /> display(name);<br />}<br />输出:<br />name<br /><br />双井号(##)<br />称为连接符<br />在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子
2011-05-12 12:57:00
2884
原创 如何划分子网
<br />1,假设取得网络地址200.200.200.0 ,子网掩码为255.255.255.0。现在一个子网有100台主机,另外4个子网有20台主机,请问如何划分子网,才能满足要求。请写出五个子网的子网掩码、网络地址、第一个主机地址、最后一个主机地址、广播地址。(子网号可以全0和全1)。请直接写出最后答案。<br /> <br />还没做题之前先要明确IP地址的命名方式、划分子网的实质、以及子网掩码的作用。<br /> IP地址的格式是(32bit) = net-id
2011-05-05 17:08:00
6836
转载 DLL的进程空间
<br /><br />一旦DLL的文件映像被映射到调用进程的地址空间中,DLL的函数就可以供进程中运行的所有线程使用。实际上,DLL几乎将失去它作为DLL的全部特征。对于进程中的线程来说,DLL的代码和数据看上去就像恰巧是在进程的地址空间中的额外代码和数据一样。当一个线程调用DLL函数时,该DLL函数要查看线程的堆栈,以便检索它传递的参数,并将线程的堆栈用于它需要的任何局部变量。此外, <b> DLL中函数的代码创建的任何对象均由调用线程所拥有,而DLL本身从来不拥有任何东西 </b> 。 <br /
2011-04-29 17:48:00
2294
转载 cmd命令快捷方式
<br />开始菜单中的“运行”是通向程序的快捷途径,输入特定的命令后,即可快速的打开Windows的大部分程序,熟练的运用它,将给我们的操作带来诸多便捷。 <br /><br />winver 检查Windows版本 <br />wmimgmt.msc 打开Windows管理体系结构(wmi) <br />wupdmgr Windows更新程序 <br />wscript Windows脚本宿主设置 <br />write 写字板 <br />winmsd 系统信息 <br />wiaacmgr 扫描仪和
2011-04-20 14:40:00
5893
原创 堆和栈的区别
<br />堆和栈的区别 <br /><br />一个由C/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 <br />操作方式类似于数据结构中的栈。 <br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 <br />收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br />3、全局区(静态区)(static)—,全局
2011-04-14 00:32:00
402
转载 C++中struct 和 class的区别
<br /><br />首先,讨论这个问题应该仅从语法上讨论,如果讨论不同人之间编程风格上的差异,那这个问题是没有答案的。毕竟不同的人偏好不同。<br />从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:<br />(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;<br />(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。<br
2011-04-14 00:18:00
339
转载 c、c++、c# 结构体与类的区别
<br /> <br />1. C与C++中结构体的比较<br />C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。<br />C++中的结构体和类的异同:<br />一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;<br /> 也就是说在C++当中,结构体中可以有成员变量
2011-04-14 00:05:00
1169
原创 new, delete, malloc,free用法心得
<br /><br /> <br />这里主要讲一下,我总结的一些内存相关问题问题。<br />1)Opencv 中IplImage 的赋值问题。请看下面代码:<br />IplImage* img1 = NULL;<br />IplImage* img2 = NULL;<br />img1 = cvLoadImage("testImg.jpg", CV_LOAD_IMAGE_COLOR); //1<br />img2 = cvCreateImage(cvGetSize(img1), img1->depth
2011-04-12 18:54:00
1188
转载 typedef 函数指针的用法
<br />进入正文:<br />代码简化, 促进跨平台开发的目的.<br /> typedef 行为有点像 #define 宏,用其实际类型替代同义字。<br /> 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。<br />用法一:<br />typedef int (*MYFUN)(int, int); <br />这种用法一般用在给函数定义别名的时候<br />上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一个int <br /
2011-04-11 11:32:00
604
转载 Flex 是什么? flex和Flash是什么关系
Flex 是什么? flex和Flash是什么关系?flex 解决什么问题?flex和J2EE/.net是什么关系? 收藏Flex 是什么? flex和Flash是什么关系?flex 解决什么问题?flex和J2EE/.net是什么关系?Flex 是 Macromedia发布的presentation server(展现服务),它是Java Web container或者.net server的一个应用,根据.mxml文件(纯粹的xml描述文件和actionscript)产生相应得.swf文件,传送到客
2011-04-09 01:11:00
547
原创 匈牙利命名规则
<br /><br /> 匈牙利命名法规则大全<br />一般情况下,变量的取名方式为:<br /><scope_> + <prefix_>+ <qualifier>。<br /> 范围前缀_,类型前缀_,限定词。<br />特殊的类型命名,前缀表示:<br /> 类、接口<br />前缀 <br />类型<br />例子<br />备注<br />Lm <br />Class <br />LmObject <br />表示类型本身<br />不与范围前缀结合使用<br />I <br
2011-04-08 12:35:00
707
转载 #define的不常用用法
<br /><br />最近看com相关的资料,看到CCmdTarget实现com接口的时候,去读了一些宏的定义,在afxdisp.h头文件中<br /> <br />#define BEGIN_INTERFACE_PART(localClass, baseClass) /<br /> class X##localClass : public baseClass /<br /> <br />本来这个宏定义很容易理解的,但是这里多出个X##,我真没见过这种用法,不晓得它是什么用意。<br />后来问了几个朋友
2011-04-08 12:30:00
1751
转载 cvRound, cvFloor, cvCeil
函数 cvRound, cvFloor, cvCeil 用一种舍入方法将输入浮点数转换成整数。 cvRound 返回和参数最接近的整数值。 cvFloor 返回不大于参数的最大整数值。cvCeil 返回不小于参数的最小整数值。在某些体系结构中该函数 工作起来比标准 C 操作起来还要快。 注意下面的编程技巧:typedef union Cv32suf{ int i; unsigned u; float f;}Cv32suf; CV_INLINE
2011-04-07 11:07:00
1356
转载 main 函数的参数说明
<br /> <br />C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int argc, char* argv[])<br />这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为:hello.exe Shiq
2011-04-06 20:18:00
1489
1
转载 Stdafx.h使用原理
<br /> stdafx.h 名称的英文全称为:Standard Application Framework Extensions<br /> 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 <br /> 预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是pr
2011-04-06 19:04:00
477
转载 静态链接库(Lib)与动态链接库(DLL)的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文
2011-04-06 18:29:00
995
转载 malloc用法
malloc用法需要包含头文件:#include 'stdlib.h'函数声明(函数原型):void *malloc(int size);说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。从函数声明上可以看出。malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:int *p;p = new int; /返回类型
2011-04-06 16:57:00
524
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人