随笔分类 -  c++

摘要:#define USE_WIN32_CONSOLE int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCm... 阅读全文
posted @ 2016-09-03 18:53 冷夜 - 网游编程技术 阅读(577) 评论(0) 推荐(0) 编辑
摘要:数据类型C++ 中基本数据类型字节数及取值范围C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别内存C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区C++内存管理malloc,calloc,realloc,free函数运算符C++运算符优先级C++之运算符重载指针、引用C++中指针和引用的区别指针的引用(*&)与指针的指针(**)函数C++ 重载、覆盖、多态与函数隐藏C++ 中const用法总结C++ void参数C++ 初始化列表C/C++中使用可变参数 阅读全文
posted @ 2014-02-18 19:03 冷夜 - 网游编程技术 阅读(372) 评论(0) 推荐(0) 编辑
摘要:要理解一个C程序,仅仅理解组成该程序的符号是不够的。程序员还必须理解这些符号是如何组合成声明、表达式、语句和程序的。 我们先来看看下面的一个语句:1( *( void(*)())0)(); 这是当计算机启动时,硬件将调用首地址为0位置的子例程。像这样的表达式恐怕会令每个C/C++程序员的内心都“不寒而栗”吧。 然而,完全不用害怕,任何C变量的声明都是由两部分组成:类型以及一组类似表达式的声明符。最简单的声明变量,如:1floatf , g ; 这个声明的含义是:当对其求值时,表达式f和g的类型为浮点型。 同样的逻辑也适用于函数和指针类型的声明,例如:1floatff(); 这个声明的含义是:. 阅读全文
posted @ 2014-01-16 14:05 冷夜 - 网游编程技术 阅读(667) 评论(0) 推荐(0) 编辑
摘要:优化-/O1 最小化空间 /O2 最大化速度/Ob 内联扩展(默认 n=0) /Od 禁用优化(默认)/Og 启用全局优化 /Oi[-] 启用内部函数/Os 优选代码空间 /Ot 优选代码速度/Ox 最大化优化 /Oy[-] 启用帧指针省略-代码生成-/GF 启用只读字符串池 /Gm[-] 启用最小重新生成/Gy[-] 分隔链接器函数 /GS[-] 启用安全检查/GR[-] 启用 C++ RTTI /GX[-] 启用 C++ EH (与 /EHsc 相同)/EHs 启用 C++ EH (没有 SEH 异常) /EHa 启用 C++ EH (w/ SEH 异常)/EHc 外部“C”默认为 not 阅读全文
posted @ 2013-06-24 11:03 冷夜 - 网游编程技术 阅读(2035) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/zhenyusoso/article/details/7956672在Windows平台进行网络程序开发, 可以使用不同的库, 但是最常用的还是微软自己开发的库。具体说来,有:(1)Winsock,工作于网络层和传输层的开发库,对于编写TCP,UDP,以及原始IP通信程序非常合适。函数原形也基本符合Unix socket标准。Windows平台上的大多数程序,如QQ,讯雷等都基于其开发。(2)ws2_32,是Winsock的升级版本,在兼容的基础上增加了不符合Unix socket标准,但更适合Windows平台的库函数,一般以WSA*开头。现代的大多 阅读全文
posted @ 2013-04-16 13:17 冷夜 - 网游编程技术 阅读(776) 评论(0) 推荐(0) 编辑
摘要:const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。 在C++中,static静态成员变量不能在类的内部初始化。在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化,如:double Account::Rate=2.25;static关键字只能用于类定义体内部的声明中,定义时不能标示为s 阅读全文
posted @ 2013-03-22 13:59 冷夜 - 网游编程技术 阅读(648) 评论(0) 推荐(0) 编辑
摘要:C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一、Const作用 如下表所示:No.作用说明参考代码1可以定义const常量 const int Max = 100;2便于进行类型检查const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误void f(const int 阅读全文
posted @ 2013-03-22 13:35 冷夜 - 网游编程技术 阅读(182) 评论(0) 推荐(0) 编辑
摘要:结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的。一、若类和结构体所有数据成员均为public型,可采取如下带花括号形式进行初始化。 注意:① 不论值的个数多少,都必须使用花括号定界② 未指定值的数据成员编译器会自动初始化为默认值③ 这种初始化对象方式,要求所有数据成员必须为public型④ 这种初始化对象方式,要求类中不能编写任何构造函数struct S { //class S 效果一样 int x; unsigned short y;};S testS1={100,123} 阅读全文
posted @ 2013-03-22 13:19 冷夜 - 网游编程技术 阅读(306) 评论(0) 推荐(0) 编辑
摘要:从表中可以看出,在C语言中有三种转义字符,它们是:一般转义字符、八进制转义字符和十六进制转义字符。1. 一般转义字符这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符。常用的一般转义字符为:\a \n \t \v \b \r \f \\ \’ \"细心的读者可能已经发现,转义字符'\\'代表的反斜杠"\"、转义字符’\’’代表的字符"'"和转义字符'\"'代表的字符""",其本身就是可显示字符,为什么还要对它转义呢?这是因为它们的原有的字符形式已作它用,其中,单引号用作区分字符常量的 阅读全文
posted @ 2013-03-19 14:56 冷夜 - 网游编程技术 阅读(452) 评论(0) 推荐(0) 编辑
摘要:对于float f; 方法1: char buf[32]; snprintf(buf, sizeof(buf), "%f ", f); string s = buf; 方法2: #include <stdlib.h> char buf[32]; _gcvt(f, 16, buf); string s = buf; 方法3: #include <sstream> ostringstream oss; oss < < f; string s = oss.str(); ... 阅读全文
posted @ 2013-01-22 18:46 冷夜 - 网游编程技术 阅读(783) 评论(0) 推荐(0) 编辑
摘要:大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? 闲话少说。我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll文件。下面,我们分别讨论这两个步骤的一些细节。一. 阅读全文
posted @ 2013-01-17 15:44 冷夜 - 网游编程技术 阅读(442) 评论(0) 推荐(0) 编辑
摘要:为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。常用的代码页由CP_ACP和CP_UTF8两个。使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。下面是代码实现:1. ANSI to Unicodewst 阅读全文
posted @ 2013-01-17 15:13 冷夜 - 网游编程技术 阅读(382) 评论(0) 推荐(0) 编辑
摘要:L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP 与P是等效的。P表示这是一个指针。T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。STR表示这个变量是一个字符串。C表示是一个常量,const。LPTSTR: 如果定义了UNICOD 阅读全文
posted @ 2013-01-11 17:37 冷夜 - 网游编程技术 阅读(444) 评论(0) 推荐(0) 编辑
摘要:0、C++的输入输出分为三种:(1)基于控制台的I/O (2)基于文件的I/O(3)基于字符串的I/O1、头文件[cpp] view plaincopyprint?#include<sstream>2、作用istringstream类用于执行C++风格的字符串流的输入操作。ostringstream类用于执行C++风格的字符串流的输出操作。strstream类同时可以支持C++风格的串流的输入输出操作。3、具体分析istringstream类描述:从流中提取数据,支持 >> 操作这里字符串可以包括多个单词,单词之间使用空格分开[cpp] view plaincopypr 阅读全文
posted @ 2013-01-09 10:06 冷夜 - 网游编程技术 阅读(39223) 评论(0) 推荐(12) 编辑
摘要:https://www.ibm.com/developerworks/cn/linux/sdk/lex/简介:Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿戏。Ashish Bansal 为您详细的讨论了编写自己的语言和编译器所用到的这两种工具,包括常规表达式、声明、匹配模式、变量、Yacc 语法和解析器代码。最后,他解释了怎样把 Lex 和 Yacc 结合起来。Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compil 阅读全文
posted @ 2012-12-23 20:42 冷夜 - 网游编程技术 阅读(284) 评论(0) 推荐(0) 编辑
摘要:转载:http://blog.csdn.net/hnwanghb/article/details/1813490对于SOCKET在这里我不想究其历史,我只想说其时它是一种进程通讯的方式,简言之就是调用这个网络库的一些API函数就能实现分布在不同主机的相关进程之间的数据交换. SOCKET中首先我们要理解如下几个定义概念:一是IP地址:IP Address我想很容易理解,就是依照TCP/IP协议分配给本地主机的网络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置,位置如何来确定,就用对方的IP二是端口号:用来标识本地通讯进程,方便OS提交数据.就是说进程指定了对方进程的网络IP,但这个IP 阅读全文
posted @ 2012-10-10 16:13 冷夜 - 网游编程技术 阅读(407) 评论(0) 推荐(0) 编辑
摘要:相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧!要想使用标准C++中string类,必须要包含#i 阅读全文
posted @ 2012-09-26 16:38 冷夜 - 网游编程技术 阅读(168) 评论(0) 推荐(0) 编辑
摘要:转之:http://soft.yesky.com/242/2082242.shtml引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。 想必这种误解的根源在于国内某著名的C程序设计教程。如果这篇文章能够纠正许多中国程序员对数组名和指针的误解, 阅读全文
posted @ 2012-09-18 15:03 冷夜 - 网游编程技术 阅读(174) 评论(0) 推荐(0) 编辑
摘要:error C2662, cannot convert ‘this’ pointer from ‘const class ’ to ‘class &’看一下导致这个编译错误的例子:class COwnInt{public:int get();private:int m_n;};int COwnInt::get(){return m_n;}int main(){const COwnInt own;own.get();return 0;}这个编译错误的主要原因是:程序中定义了一个const的类对象own,然后又用own调用了一个非const的函数get()。由于const对象在调用成员函数 阅读全文
posted @ 2012-09-18 10:59 冷夜 - 网游编程技术 阅读(328) 评论(0) 推荐(0) 编辑
摘要:在C++中,数组永远不会按值传递。它是传递第一个元素(准确地说是第0个)的指针。例如,如下声明: void putValues(int[10]);被编译器视为: void putValues(int*);数组的长度与参数声明无关。因此,下列三个声明是等价的: void putValues(int*); void putValues(int[]); void putValues(int[10]);因为数组被传递为指针,所以这对程序员有两个含义:1、在被调函数内对参数数组的改变将被应用到数组实参上而不是本地拷贝上。当用作实参的数组必须保持不变时,程序员需要保留数组的拷贝。函数可以通过把参数类型声明 阅读全文
posted @ 2012-09-17 17:32 冷夜 - 网游编程技术 阅读(501) 评论(0) 推荐(0) 编辑