自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sead+

狂奔的蜗牛。

  • 博客(87)
  • 资源 (2)
  • 收藏
  • 关注

原创 浮点数的比较

在数学运算当中经常会涉及到判断两个数是否相等的情况对于整数很好处理   A==B这样的一个语句就可以解决全部的问题但是对于浮点数是不同的首先,浮点数在计算机当中的二进制表达方式就决定了大多数浮点数都是无法精确的表达的现在的计算机大部分都是数字计算机,不是模拟机,数字机的离散化的数据表示方法自然无法精确表达大部分的数据量的。其次计算机浮点数的精度在单精度float类型下,

2013-08-01 20:10:07 867

转载 linux中shell变量$#,$@,$0,$1,$2的含义解释

linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出

2013-04-17 17:25:13 1485

转载 C++静态(static)成员 静态(static)成员函数总结

类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时

2012-11-08 01:07:49 714

原创 揭露谭浩强的错误-证实不能用字符指针变量做形参

谭浩强  《C程序设计第三版》 第255页 例10.19 有如下程序:功能是将a字符串复制到b,并输出两个字符串。#include#includevoid copy_string(char *from,char *to){ for(;*from!='\0';) *to++=*from++; *to='\0'; }int main()

2012-11-07 23:56:14 1576 1

原创 malloc/free与new/delete的区别

相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不

2012-11-04 23:51:32 526

转载 C++里的静态(static)成员函数(不能用const的原因+static在c++中的第五种含义)

C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)          ----自 core c++   static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静

2012-11-01 16:54:16 827

原创 指针和引用的区别总结

1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存区域3.从编译上看:程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变

2012-10-30 00:07:59 464

转载 运算符重载

C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。   运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作

2012-10-27 13:39:49 512

原创 C语言函数内部改变指针本身

今天发一个C语言基础的小知识点:C语言中函数参数传递方式只有一种:值传递。 可能大家在刚开始学习C的时候都被一些教材误导,认为C中有值传递和地址传递两种方式。其实只有值传递一种,无论函数以什么形式进行传递,其实传递的都只是参数的一份拷贝! 举个简单的例子,一个改变某个整型变量参数的函数int change_value(int *pChange, int val){

2012-10-25 23:11:44 1163

原创 常量引用

如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。对常量的引用可以用其它任何引用来初始化;但不能改变。关于引用的初始化有两点值得注意:(1)当初始化值是一个左值(可以取得地址)时,没有任何问题;(2)当初始化值不是一个左值时,则只能对一个constT&(常量引用)赋值。而且这个赋值是有一个过程的:首

2012-10-25 22:00:25 1311

原创 TCP的几个状态 SYN, FIN, ACK, PSH, RST, URG

TCP的几个状态对于我们分析所起的作用。 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是: SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DATA数据传输, RST表示连接

2012-10-24 14:46:23 1111

转载 C++虚函数表解析

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过

2012-10-04 23:54:02 526

转载 C++编程对缓冲区的理解

转载自:http://developer.51cto.com/art/201107/277186.htm一、什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。二、为什么要引入缓冲区我们为什么要

2012-09-28 21:19:51 717

原创 C/C++运算符优先级

C语言中的运算符说明运算符结合性初等运算符() [] -> . ->单目运算符! ~ ++ -- - (类型) * & sizeof算术运算符* / %->算术运算符+ -->移位运算符>->关系运算符> >= ->关系运算符== !=

2012-09-28 14:46:26 913

转载 头文件与之实现文件的的关系~

今天在网上看到一篇解释.h与.c(.cpp)的文章,我读完后感到有些地方不妥,特此按照我的理解,给初学者一些指导~说几句题外话,刚才让女朋友陪我出去一会,她说她要先化化妆,我随口就来--简单就是美丽啊!你猜她说什么:美丽除了天生丽质外,保养也是很重要的~ 我倒~你理解简单的含义吗?关于两者以前的关系,要从N年以前说起了~ long long ago,once aupon a tim

2012-09-28 13:30:12 1438

原创 typedef中的指针

关于typedef和define在程序运行中的作用。例:#define a inttypedef int a;define是展开,纯展开。不是调用。如例,int就像一只悬挂在a上面的一块石头,就随时准备着,你说需要的时候,它就“啪”的一声掉下来,把原本定义的名字砸在下面。展现出原本的自己。别的它不管不问了,融入代码的海洋中了。(所以切记int

2012-09-27 01:21:19 561

原创 C语言中sizeof与strlen区别

一.本质区别sizeof和strlen有本质上的区别。sizeof是C语言的一种单目运算符,如++、--等,并不是函数,sizeof的优先级为2级,比/、% 等3级运算符优先级高,sizeof以字节的形式给出操作数的存储空间的大小。而strlen是一个函数,是由C语言的标准库提供的。strlen计算的 是字符串的长度。二.使用区别1.sizeofsizeof的操作数可以是数据类型、

2012-09-26 17:50:28 1025

原创 C++异常处理

异常:程序执行期间,可检测到的不正常情况。例如:0作除数;数组下标越界;打开不存在的文件;远程机器连接超时;malloc失败等等。程序的两种状态:正常状态和异常状态,发生不正常情况后,进入异常状态,从当前函数开始,按调用链的相反次序,查找处理该异常的程序片断。1.throw 表达式语义:用表达式的值生成一个对象(异常对象),程序进入异常状态。Terminate函数,终止

2012-09-14 18:07:21 627

原创 关于C++中模板中的typename和class的区别比较

问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同?template class Widget; // uses "class"template class Widget; // uses "typename"   答案:没什么不同。在声明一个 template type parameter(模板类型参数)的时候,

2012-09-11 23:54:38 767

转载 C++ 虚析构函数

类型需要虚析构函数的另外一个特征 是该类型具有指针成员或引用成员。如果有指针成员和引用成员,则该类型通常需要实现析构函数以及拷贝操作。通常,一个实现了析构函数的类型同时也需要实现拷贝构造函数与拷贝复制函数。作为一个经验法则:如果你有一个带有虚函数功能的类,则它需要一个虚析构函数,原因如下:1. 如果一个类有虚函数功能,它经常作为一个基类使用。2.如果它是一个基类,它的派生类经常

2012-09-08 10:50:04 467

转载 C/C++中枚举类型(enum)的使用解惑

枚举类型,顾名思义,“枚”作为量词,作“个”讲,那么枚举,就是一个一个的列举,如果一件事情能够被一个一个的列举,那么它的数量肯定就是有限的,否则是不能被一一列举出来的。所以枚举类型即为能被列举的常量的一个集合。在 生活中,枚举的例子随处可见,比如礼拜几,那么就可以作为一个枚举变量。这个变量所存储的值,是有限的,且,能被我们所列举。再比较说,性别。它也可以作 为一个枚举类型,我们知道,性别也就只

2012-08-30 09:46:18 1289

转载 内部连接和外部连接

在说内部连接与外部连接前,先说明一些概念。   1.声明  一个声明将一个名称引入一个 作用域;  在c++中,在一个作用域中重复一个声明是合法的 以下都是声明: int foo(int,int); //函数前置声明 typedef int Int; //typedef 声明 class bar; //类前置声明 extern

2012-08-29 10:09:32 722

转载 cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()1、cin>>          用法1:最基本,也是最常

2012-08-29 09:32:33 642

原创 C++ system函数用法

int system( const char *command ); int _wsystem( const wchar_t *command ); command: Command to be executed sample: //system.c #include void main( void ) { system( "typ

2012-08-28 22:24:01 9394

原创 STL函数对象及函数对象适配器

一 函数对象Functor  STL中提供了一元和二元函数的两种Functor,通过unary_function和binary_function提供了这两种不同参数数量的Functor的基本结构,在这两个类型中,分别内嵌定义一元和二元函数操作在模版推演的时候需要用到的typedef. //一元函数的定义为templatestruct unary_function {

2012-08-14 21:46:40 816

原创 C++ 智能指针

智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷

2012-08-13 00:12:25 585

原创 C++ 直接初始化和复制初始化

在C++里,对象初始化是一个非常重要但又容易令人混淆的问题。这里是自己的一些总结。一。初始化与赋值的含义:初始化:包括创建(或说定义)对象并且赋给初值。(如果一个对象只被创建而没有被初始化,则该变量只能用于被赋值)。赋值: 擦除对象的当前值并用新值代替。二。内置类型:(一)直接初始化:1.空初始化:即无参数无括号形式如int i,new int,new int[

2012-08-11 22:02:36 1059

转载 复制构造函数(拷贝构造函数)

也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。为了说明复制构造函数作用,我先说说我们在编程时会遇到的一些问题。对于C++中的函数,我们应该很熟悉了,因为平常经常使用;对于类的对象,我们也很

2012-08-11 21:36:36 923

原创 深复制与浅复制(深拷贝与浅拷贝)

拷贝有两种:深拷贝,浅拷贝当出现类的等号赋值时,会调用拷贝函数在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的。但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象。所以,这时,必须采用深拷贝。深拷贝与浅拷贝的区别就

2012-08-10 17:58:06 3175

原创 容器适配器

STL学习系列之六—容器适配器STL提供了三种容器适配器:stack,queue,priority_queue。适配器并不是第一类容器,因为它们并没有提供与元素的保存形式有关的真正数据结构实现,并且适配器不支持迭代器。适配器的优点是:能够使程序员选择一种合适的底层数据结构。这三个适配器类都提供了成员函数push和pop,能够在每个适配器数据结构中正确地插入和删除元素。1、 st

2012-08-05 12:05:00 1649 3

原创 vector.resize 与 vector.reserve的区别

reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。再者,两个函数的形式是有区别的,reserve函数之

2012-08-04 09:12:35 675

原创 vector容器与iterator迭代器

vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(class

2012-08-02 16:28:15 39799 5

转载 C++中文件流(fstream)的使用方法及示例

C++文件流:fstream  // 文件流ifstream  // 输入文件流ofstream  // 输出文件流  #include //创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ofstream ofs("C:\\example.txt")

2012-07-30 15:48:14 77947

原创 C++primer 标准IO库

面向对象的标准库实际的程序不仅限于对控制窗口的IO,通常还需要读或写已命名的文件。此外,程序还应该能够方便地使用IO操作格式化内存中的数据,从而避免读写磁盘或其他设备的复杂性和运行代价。应用程序还需要支持宽字符语言的读写。从概念上看,无论是设备的类型还是字符的大小,都不影响需要执行的IO操作。要同时支持不同的设备和不同大小的字符流,标准库使用了继承来定义一组面向对象的类。一般而言,通过继承

2012-07-29 20:52:58 1497 2

原创 内联函数的声明和定义

一、什么叫inline函数? inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。这样做的不好处:由于每当代码调用到内联函数,就需要在调用处直接插入

2012-07-26 15:00:16 24251 1

转载 C++引用参数与指针参数

引用和指针参数,这两种参数都允许函数修改实参,也都允许有效地向函数传递大型类对象。那么,怎么样决定把函数参数声明成引用还是指针呢?引用必须被初始化为指向一个对象,而且一旦初始化了,就不能指向其他对象。而指针可以指向一系列不同的对象也可以什么都不指向。因为指针可能指向一个对象或者没有任何对象,所以函数在确定指针实际指向一个有效地对象之前不能安全地解引用一个指针。例如:class X;

2012-07-24 17:09:00 5796 2

原创 main 函数传参

main函数的声明int main(int argc, char **argv)或者int main(int argc, char *argv[])第一个形参argc用于传递数组中字符串的个数第二个形参argv是一个C风格的字符串例:编写一个主函数main,使用两个值作为实参,并输出它们的和。#includeusing namespace std;

2012-07-24 13:03:00 1278

原创 C++中的异常处理

感谢C++语言的后期改造者们,他们在标准C++语言中专门集成了异常处理的相关语法(与之不同的是,所有的C 标准库异常体系都需要运行库的支持,它不是语言内核支持的)。当然,异常处理被加到程序设计语言中,也是程序语言发展和逐步完善的必然结果。我们看到,C++不是唯一集成异常处理的语言。  C++的异常处理结构为:try{//可能引发异常的代码}catch(type_1 e){

2012-07-20 00:15:55 531

原创 C++强制类型转换

先后看过几次关于C++类型转换的资料,甚至还用过几次,可对其了解还是很模糊,本次特别予以总结。不是随便写的,真的是用心写的,姑且看吧。C++命名的强制类型转换也称作新式类型转换,也是C语言类型转换的一个演进。看一个C语言的类型转换:1char *hopeItWorks = (char *)0x00ff0000;

2012-07-19 17:39:14 584

原创 C++中数据类型

在C++中类型大致可以分为三种一、内置类型如int, char, float, unsigned等。内置类型是最基本的类型。二、复合类型复合类型:使用其它类型定义的类型。有三种复合类型:引用,指针,数组。三、类类型就是类。比如string以及其他自己定义的类。

2012-07-18 22:16:13 644

linux系统与网络

讲解linux系统网络和应用,值得一看。

2013-05-22

Windows系统程序设计之结构化异常处理

精心搜集的关于windows下的C/C++异常处理机制的描述,语言简单易懂。适合初学者。打好基础才能更好地发展。

2012-07-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除