![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 71
fmantianpiaolan
这个作者很懒,什么都没留下…
展开
-
#和##的用法
<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 · 2709 阅读 · 0 评论 -
C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:1#ifdef __cplusplus2extern "C" {3#endif4 5/*...原创 2011-10-28 16:32:51 · 431 阅读 · 0 评论 -
转义字符的完整诠释
转义字符的完整诠释转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。 转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS)转载 2011-11-24 12:01:36 · 599 阅读 · 0 评论 -
hostent结构体
使用这个东西,首先要包含2个头文件:#include #include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如" www.google.com","wpc"等等。传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。struct hostent {转载 2011-11-08 13:38:29 · 444 阅读 · 0 评论 -
C程序的格式字符串
在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。各项的意义介绍如下: 1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示: 表示输出类型的格式字符 格式字符意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进转载 2011-12-17 19:47:53 · 411 阅读 · 0 评论 -
C++中的static用法(面向过程+面向对象)
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#includ转载 2011-12-25 20:48:52 · 354 阅读 · 0 评论 -
exit和return区别
exit(0) 表示程序正常, exit(1)/exit(-1)表示程序异常退出exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..exit转载 2011-12-26 11:41:22 · 318 阅读 · 0 评论 -
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 · 408 阅读 · 0 评论 -
内存对齐的规则以及作用
首先由一个程序引入话题: 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 · 336 阅读 · 0 评论 -
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 · 2377 阅读 · 0 评论 -
C++ 枚举类型的思考
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess { Read转载 2011-07-31 01:49:38 · 347 阅读 · 0 评论 -
C++ 枚举类型的思考
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess { Read = 0转载 2011-07-28 17:11:43 · 385 阅读 · 0 评论 -
DLL的进程空间
<br /><br />一旦DLL的文件映像被映射到调用进程的地址空间中,DLL的函数就可以供进程中运行的所有线程使用。实际上,DLL几乎将失去它作为DLL的全部特征。对于进程中的线程来说,DLL的代码和数据看上去就像恰巧是在进程的地址空间中的额外代码和数据一样。当一个线程调用DLL函数时,该DLL函数要查看线程的堆栈,以便检索它传递的参数,并将线程的堆栈用于它需要的任何局部变量。此外, <b> DLL中函数的代码创建的任何对象均由调用线程所拥有,而DLL本身从来不拥有任何东西 </b> 。 <br /转载 2011-04-29 17:48:00 · 2231 阅读 · 1 评论 -
DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC
<br />最近有些朋友在看《深入浅出MFC》的时候,被第三章的几个宏给卡住了,记得我第一次看此书时,也被这几个宏给卡住。当然真正卡人的其实是第一个,也就是DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC。我做了一个详解,供同样被卡住的朋友做个参考:)说明:这两个宏的主要目的,是在所指定的class(比如CView)的声明和实现里,加上一些静态成员函数和静态成员变量。所以,不要管“/”这个换行标志,就把里面的每一句话当作是在类里的声明或者是实现。另外,“##”和"#"符号我就不不赘述了转载 2011-05-12 13:14:00 · 784 阅读 · 0 评论 -
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 · 1318 阅读 · 0 评论 -
#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 · 1676 阅读 · 0 评论 -
匈牙利命名规则
<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 · 676 阅读 · 0 评论 -
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 · 315 阅读 · 0 评论 -
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 · 556 阅读 · 0 评论 -
堆和栈的区别
<br />堆和栈的区别 <br /><br />一个由C/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 <br />操作方式类似于数据结构中的栈。 <br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 <br />收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br />3、全局区(静态区)(static)—,全局原创 2011-04-14 00:32:00 · 378 阅读 · 0 评论 -
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 · 1153 阅读 · 0 评论 -
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 · 1071 阅读 · 0 评论 -
C语言中auto,register,static,const,volatile的区别
1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static 常见的两种用途:转载 2012-05-22 14:56:00 · 429 阅读 · 0 评论