C++
莲娃
充实就好
展开
-
crtexe.c
crtexe.c原创 2017-01-03 15:48:41 · 1472 阅读 · 0 评论 -
assert宏
1、函数所属头文件: assert.h2、函数原型: void assert (int expression);3、功能说明:assert的关键在于判断expression的逻辑真假,如果为false,就会在stderr(标准错误流输出)上面打印一条包含“表达式,文件名,行号”的错误信息,然后调用abort结束整个程序。 其中的文件名和行号来自于预处理宏__FILE__ 和 __原创 2017-03-23 22:13:04 · 344 阅读 · 0 评论 -
vs2010创建和使用动态链接库(dll)
创建动态链接库项目打开Microsoft Visual Studio 2010,选择文件->新建项目->Win32控制台应用程序->在应用程序设置页面选择下图所示选项: 向动态链接库添加类: 添加新类头文件。右键单击simple项目,Add->New Item,选择Header File(.h),设置名称,单击Add。 添加新类源文件。右键单击simple项目,Add->New Item,选原创 2017-03-21 14:24:37 · 648 阅读 · 0 评论 -
new/delete PK malloc/free
malloc/free标准库函数void * malloc(size_t size);用malloc 申请一块长度为length 的整数类型的内存,程序如下:int *p=(int*)malloc(10*sizeof(int)) 我们应当把注意力集中在两个要素上:“类型转换”和“sizeof”。 1. malloc 返回值的类型是void ,所以在调用malloc 时要显式地进行类型转换,将voi原创 2017-03-13 10:51:47 · 460 阅读 · 0 评论 -
C++中return语句的用法
return语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数。return语句有两种形式:return;return expression;1、没有返回值的函数 不带返回值的return语句只能用于返回类型为void的函数,return语句是为了引起函数的强制结束,这种用法类似于循环结构中的break语句的作用。void swap(int &v1,int &v2){原创 2017-03-12 17:07:17 · 22975 阅读 · 2 评论 -
#pragma预处理命令
C语言三种预处理功能宏定义(#define)宏定义又称为宏代换、宏替换,简称“宏”。不带参数 格式:define 标识符 字符串其中标识符就是所谓的符号常量,也称为“宏名”。例:#define Pi 3.1415926//把程序中出现的Pi全部换成3.1415926说明:宏名一般用大写;使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义;预处原创 2017-03-12 10:25:36 · 400 阅读 · 0 评论 -
被玩坏的C程序控制台窗口
听说你在Windows系统上C语言程序?那你对控制台窗口了解多少?原创 2017-01-15 09:37:01 · 8640 阅读 · 5 评论 -
C++自定义数据类型的转换
对于用户自定义的类类型,编译系统不知道如何进行转换(不能像基本数据类型(如,int、double)一样来进行显式或者隐式转换)所以需要定义专门的函数来告诉编译系统改如何转换,要用到带单参数的构造函数(基本数据类型=>自定义数据类型)转换函数(自定义数据类型=>基本数据类型)来进行抽象数据类型和基本数据类型之间的转换。带单参数的构造函数(基本数据类型=>自定义数据类型)这类构造函数称为转换构造函原创 2017-06-27 15:08:35 · 7826 阅读 · 0 评论 -
C++异常
(参阅书籍:C++标准程序库)标准异常类别语言本身或标准程序库所抛出的所有异常,都派生自基类exception。这些标准异常类别的分为三类:语言本身支持的异常C++标准程序库发出的异常程序作用域(scope of a program)之外发出的异常分别说明:语言本身支持的异常-用来支撑某些语言特性:bad_alloc任何使用动态内存的东西(例如所有STL容器)如果无法找到足够内存以满足需求原创 2017-07-06 10:42:43 · 364 阅读 · 0 评论 -
将文件间的编译依存关系降至最低
假设有三个类ComplexClass, SimpleClass1和SimpleClass2,将类的声明与类的实现分开,这样共对应于6个文件,分别是ComplexClass.h,ComplexClass.cppSimpleClass1.h,SimpleClass1.cppSimpleClass2.h,SimpleClass2.cpp对应的头文件和源文件要保持一致性。(1)ComplexClas原创 2017-07-06 17:11:30 · 424 阅读 · 0 评论 -
MinGW安装和最简易案例
安装为了在 Windows 上安装 GCC,您需要安装 MinGW。为了安装 MinGW,请访问 MinGW的主页 ,进入下载页面,下载最新版本的 MinGW 安装程序。 自动运行mingw installation manager,在basic setup(红色框)中选择你需要的,点击鼠标右键,选择Mark for Installation。 点击Installation中的Apply Chan原创 2017-07-15 17:02:52 · 6039 阅读 · 0 评论 -
C++常量
整数常量整数常量可以是十进制、八进制或十六进制的常量。 前缀指定基数:0x 或 0X 表示十六进制0 表示八进制不带前缀则默认表示十进制整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。列举几个整数常量的实例:212 // 合法的215u原创 2017-07-16 11:41:33 · 526 阅读 · 0 评论 -
C++using声明和using指示
using声明声明的形式:using namespace_name::name一个using声明一次只引入一个命名空间成员。using std::cout;using std::vector;int main(){ int x; cin>>x;//wrong std::cin>>x;//right cout<<x;//right}using声明中引入的名字遵循原创 2017-07-08 09:30:57 · 47306 阅读 · 5 评论 -
<cstdio> (stdio.h)中的fflush函数
调用格式int fflush ( FILE * stream );返回:当成功时,返回0发生error时,返回EOF,并设置错误提示符参数:指向一个指定缓冲流( buffered stream)FILE实体的指针如果stream为null指针,则all such streams are flushed.简单实例#include <stdio.h> int main() {原创 2017-08-18 12:01:50 · 544 阅读 · 0 评论 -
32位64位操作系统基本数据类型字节大小
32位64位操作系统基本数据类型字节大小 win32(单位:字节) win64(单位:字节) char 1 1 short 2 2 int 4 4 long 4 4 long long 8 8 float 4 4 double 8 8 long double 8 8 bool 1原创 2017-06-22 09:26:22 · 365 阅读 · 0 评论 -
try-catch
程序出错程序的错误大致可以分为三种,分别是语法错误、逻辑错误和运行时错误 说明 语法错误 语法错误在编译和链接阶段就能发现,只有 100% 符合语法规则的代码才能生成可执行程序。语法错误是最容易发现、最容易定位、最容易排除的错误。 逻辑错误 逻辑错误是说我们编写的代码思路有问题,不能够达到最终的目标,这种错误可以通过调试来解决。 运行时错误 运行时错误是指程序在运行期原创 2017-06-22 22:00:49 · 261 阅读 · 0 评论 -
C++命名空间(namespace)
关于namespace:在头文件中,不要把#include命令放在命名空间中,命名空间中的内容不包括命令行,否则编译会出错。命名空间可以在全局作用域或其他作用域内部定义,但不能在函数或类内部定义。标准命名空间std标准C++库的所有标识符都是在一个名为std的命名空间中定义的,或者说标准头文件(如iostream)中函数、类、对象和类模板是在命名空间 std中定义的。全局命名空间全局命名空间原创 2017-07-04 21:34:35 · 842 阅读 · 0 评论 -
tidtable.c 说明
tidtable.c - 访问线程数据表实现功能: 这个模块包含以下用于多线程数据支持的例程:_mtinit = Initialize the mthread data初始化m线程数据_getptd = get the pointer to the per-thread data structure for the current thread获取指向当前线程的线程数原创 2016-12-28 20:36:05 · 1331 阅读 · 0 评论 -
关于srand(time(0)) rand() 的解释
随机数发生器和伪随机数发生器在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器。有关如何产生随机数的理论有许多,不管用什么方法实现随机数发生器,都必须给它提供一个名为种子的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。 下面讲一讲在C语言原创 2016-12-29 11:44:11 · 9315 阅读 · 1 评论 -
C++头文件学习
头文件 预编译vc编译器的版本#pragma once_MSC_VER原创 2017-01-06 21:55:42 · 322 阅读 · 0 评论 -
C++前置式后置式递增和复合赋值操作符对程序性能
n++要开辟一个变量来保存n的值并返回,然后让n这个变量中的值加 1。 而++n直接把1加到n这个变量的空间中去,并返回n这个空间中的值,没有开辟任何临时空间,性能更高。n+=1与n=n+1在结果上是等价的。但使用复合赋值操作符+=时,直接把1加到变量n的空间中去,左操作数只计算了一次加法;而使用长表达式 n=n+1时,先要去n这个变量空间中去取值(要寻址),与1做一次加法计算,然后做一次赋值计算原创 2017-01-07 15:31:14 · 403 阅读 · 0 评论 -
c++ 指针point 和引用reference的区别
referencepoint转载 2017-01-12 16:17:00 · 980 阅读 · 0 评论 -
C++显式转型
类型转换(将expression转换为type_id类型) 使用场合 static_cast< type_id>(expression) 主要用于非多态类型之间的转换,不提供运行时的检查来确保转换的安全 1、用于类层次结构中,基类和子类之间指针和引用的转换;进行上行转换,也就是子类->父类,这种转换是安全的;下行是不安全的;2、用于基本数据类型的转换,如int转换为char等,这原创 2017-03-08 08:30:41 · 311 阅读 · 0 评论 -
3种错误处理方法
3种错误处理 优缺点 返回值函数用返回值来告知调用者是否出错,比如很多Windows的API就是这个类型。其返回值为0表示API调用成功,返回值不为0表示API调用的过程中出错了。微软为不同非零返回值定义了不同意义,可以根据这些返回值判断出错的原因, 缺点:函数不能直接把计算结果通过返回值赋为其它变量,同时也不能把这个函数算法的结果直接作为参数传递为其它函数。 全局变量 当发生错误原创 2017-03-17 21:27:44 · 777 阅读 · 0 评论 -
C++ 的operator
C++中的operator主要有两个作用,一是操作符的重载,一是操作符的转换。操作符重载operator是C++关键字,用于对C++进行扩展;可以被重载的操作符:new、new[]、delete、delete[]、+、-、、/、%、^、&、| 、~、!、=、<、>、+=、<<、>>、<<=、>>=、++、!= 、<=、>=、&&、||、++、–、->、->、()、[]不可以被重载的操作符:、.原创 2017-02-26 09:16:17 · 897 阅读 · 0 评论 -
C++的typename
1.模板参数列表中与class关键字可相互替换template<typename T>template<class T>是一样的2.嵌套从属名称(nested dependent names) 假如template内出现的名称如果依赖于某个模板参数,则称其为从属名称(dependent names),如果从属名称在class内呈嵌套状则称之为嵌套从属名称(nested dependent n原创 2017-02-26 09:53:48 · 258 阅读 · 0 评论 -
exit(0)与exit(1)、return区别
exit(0)与exit(1)、return区别 区别 exit(1);exit(0); return;return expression; exit(1) 非正常运行导致退出程序;exit(0)正常运行程序并退出程序; return返回函数值,是关键字 exit是系统调用级别的,它表示了一个进程的结束。 return是语言级别的,它表示了调用堆栈的返回原创 2017-03-14 10:02:42 · 424 阅读 · 0 评论 -
C++全局变量、静态局部变量、局部变量、静态全局变量
全局变量、静态局部变量、局部变量、静态全局变量 全局变量 全局作用域 全局变量只需在一个源文件中定义,就可以作用于所有的源文件。其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。 静态存储区分配空间 静态全局变量 全局作用域 如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰原创 2017-07-03 15:49:39 · 395 阅读 · 0 评论 -
C语言的函数调用约定(stdcall+cdecl+thiscall+fastcall)
在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。 但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的原创 2017-06-28 14:47:48 · 4636 阅读 · 0 评论 -
C++显式类型转换符
显式类型转换符 转换格式:static_cast / dynamic_cast / const_cast / reinterpret_cast< type-id> (expression) static_cast 主要用于非多态类型之间的转换+不提供运行时的检查来确保转换的安全性 1、用于类层次结构中,基类和子类之间指针和引用的转换。当进行上行转换,也就是把子类的指针或引用转换成原创 2017-07-03 16:36:30 · 348 阅读 · 0 评论 -
C++枚举类型
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓”枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。创建枚举,需要使用关键字 enum。枚举类型的一般形式为:enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数],原创 2017-07-16 11:00:11 · 682 阅读 · 0 评论