【C++基础】
文章平均质量分 92
雪天飞山狐狸
吃饱穿暖活下来
展开
-
给C++初学者的50个忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学原创 2012-09-27 14:48:09 · 597 阅读 · 0 评论 -
又一道编程面试题
http://blog.csdn.net/w397090770/article/details/8030317转载 2012-10-11 15:44:49 · 464 阅读 · 0 评论 -
sizeof运算符以及内存对齐
sizeof Operatorsizeof expression The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of转载 2012-09-23 08:03:43 · 617 阅读 · 0 评论 -
C++编译,链接
以前学习C++的时候半懂不懂,用微软的IDE,所以对于编译链接不是很了解,今天总算了些了解。1、何谓编译,链接高级语言(C,C++等等)要变成机器可执行的指令,需要“编译”,“链接”,“装入”三个过程,编译:由编译程序将用户源代码编译成若干个目标模块,即.c/ .cpp----->.obj(windows) .o(unix),一般是一个源文件对应一个.obj文件转载 2012-09-23 08:01:21 · 432 阅读 · 0 评论 -
.c/.cpp文件windows命令行下编译,运行.c/.cpp文件
用virtual studio编译链接文件习惯了,今天想在windows命令行下试一下如何进行文件的编译运行,起初以为敲几个命令就螚搞定了,输入cl命令居然不能运行,提示“cl不是内部命令或者外部命令”,上网查了许久,发现这样的问题介绍的好少,下面就谈谈在命令行下如何编译运行.c或者.cpp文件方法一:1、讲Microsoft Visual Studio下的cl原创 2012-09-23 08:02:05 · 1301 阅读 · 0 评论 -
#Pragma Pack(n)与内存分配
#pragma pack(n)解释一:每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。 规则: 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在off转载 2012-09-23 08:04:47 · 1117 阅读 · 0 评论 -
数组,指针,数组指针
先看下下面这个例子: Inta[5]; 定义一个数组,其包含了5个int型的数据,我们可以用a[0],a[1]等来访问数组里面的每一个元素。这里的a[0],a[1]等为a的元素,但并非元素的名字。数组的每一个元素都是没有名字的。 Sizeof(a)的值为sizeof(int)*5,32位系统下为20,数组的长度。 Sizeof(a[0])的值为sizeof(int),转载 2012-10-31 09:35:23 · 536 阅读 · 0 评论 -
堆和栈
堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵原创 2012-11-02 12:46:27 · 394 阅读 · 0 评论 -
#define用法总结
1. 定义简单的常数:定义常量,便于修改(切不可在后面加上分号!) #define N 1000 等效于 const int N = 1000; 但略有不同,define只是简单替换,而不是作为一个量来使用.2. 定义简单的函数:注意多使用括号define可以像函数那样接受一些参数,如下:#define max(x,y) (x)>(y)?(x原创 2012-11-02 13:12:52 · 573 阅读 · 0 评论 -
指针问题总结
这是一篇我所见过的关于指针的最好的入门级文章,它可使初学者在很短的时间内掌握复杂的指针操作。虽然,现在的JAVA、C#等语言已经取消了指针,但作为一个C++程序员,指针的直接操作内存,在数据操作方面有着速度快,节约内存等优点,仍是很多C++程序员的最爱。指针就像是一把良剑,就看你怎么去应用它!有关这篇文章的技术性问题你可以写信给我:webmaster@chinahai.com.同时我的另外两篇转载 2012-11-02 14:41:15 · 865 阅读 · 0 评论 -
开始回顾C/C++
离开C、C++技术开发的时间大概有近一年了,趁着工作没有忙到夸张,找时间抓紧回顾和温习。编译环境: Dev-C++ 4.9.9.2技术对象:C++ Primer 中文版 >主要工作: 基础知识的整理整体知识点的回顾和总结相关技术点代码的调试重点用法的归纳原创 2012-09-21 15:51:10 · 611 阅读 · 0 评论 -
浙江大华2011.10.10校园招聘会笔试题
请写出下面程序的输出结果:(答案在下面)1、[cpp] view plaincopyint count = 3; int main(void) { int i, sum, count = 2; for(i=0,sum=0; i { static int count = 4转载 2012-10-25 15:49:01 · 1751 阅读 · 0 评论 -
float和double的范围和精度
float与double的范围和精度1 范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bits(指数位)23bits(尾数位)double:1bit(符号位)11bits(指数位)52bits(尾数位)在数学中,特别是在计算原创 2012-09-22 12:32:12 · 3386 阅读 · 1 评论 -
15个Google面试题以及答案~~~~你会几个?
1、 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情。村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情。村里的规矩不容忍通奸。任何一个妻子,一旦能证明自己的男人偷情,就必须当天把他杀死。村里的女人全都严格照此规矩办事。一天,女头领出来宣布,村里至少有一个丈夫偷情。请问接下来会发生什么事?答案:这是一个典型的递归问题。一旦所有的妻子都知转载 2012-11-08 15:44:53 · 552 阅读 · 0 评论 -
C++和C#编写调用COM组件
http://www.vckbase.com/index.php/cv/654转载 2012-11-09 14:13:26 · 461 阅读 · 0 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护的内存地址,不可访问) 程序代码区(只读,存代码和一转载 2012-11-08 15:44:17 · 357 阅读 · 0 评论 -
c++模板类学习
1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y){ return(x>y)?x:y ; }//函数2.转载 2012-11-08 15:45:36 · 351 阅读 · 0 评论 -
C++中const用法总结
原创案例讲解——”玻璃罩const”系列的三篇文章:1. 使用常对象——为共用数据加装一个名为const的玻璃罩2. 常(const)+ 对象 + 指针:玻璃罩到底保护哪一个3. 对象更有用的玻璃罩——常引用 话题的引入:C++采取了不少有效的措施(如设private保护)以增加数据的安全性,但也可以在不同的场合通过不同的途径访问同一个数据对象。有转载 2012-11-09 14:16:03 · 578 阅读 · 0 评论 -
C++多线程 例子
C++多线程 例子2008-08-21 15:11//这是2个线程模拟卖火车票的小程序#include windows.h>#include iostream.h>DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread dataDWORD WINAPI Fun2Proc(LPVOID lpParameter)转载 2012-11-12 14:45:19 · 483 阅读 · 0 评论 -
C++多线程实例(_beginThreadex创建多线程)
C++多线程(二)(_beginThreadex创建多线程) C/C++ Runtime 多线程函数一 简单实例(来自codeprojct:http://www.codeproject.com/useritems/MultithreadingTutorial.asp)主线程创建2个线程t1和t2,创建时2个线程就被挂起,后来调用ResumeThread恢复2个线程,是其开始执行转载 2012-11-12 14:48:23 · 849 阅读 · 0 评论 -
联合体(union)和结构体(struct)的区别
1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。 下例表示说明一个联合a_bc原创 2012-11-12 14:49:25 · 935 阅读 · 0 评论 -
C++多线程(一)
一 简单实例比较简单的代码,创建10个线程,其中使第4个线程在一创建就挂起,等到其他的线程执行的差不多的时候再使第4个线程恢复执行。#includestdio.h>#includestdlib.h>#includewindows.h>#define THREAD_NUM 10DWORD WINAPI PrintThreads (LPVOI转载 2012-11-12 14:45:54 · 387 阅读 · 0 评论 -
cstring to char*,const char*
1. const char* To CStringconst char* c;c = "abcdef";CString s;int len = strlen(c);TCHAR* c1 = (TCHAR*)malloc(sizeof(TCHAR)*len);MultiByteToWideChar( CP_UTF8 , 0 , c , len+1 , c1 , len+1)转载 2012-11-26 21:05:53 · 666 阅读 · 0 评论 -
ATL
ATL(Active Template Library) ATL,Active Template Library活动模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等等控件。 ATL简介 一. 什么是ATL转载 2012-11-26 17:27:34 · 600 阅读 · 0 评论 -
typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入。2)typedef是在编译时处理的。它在自原创 2012-11-12 16:22:46 · 420 阅读 · 0 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护的内存地址,不可访问) 程序代码区(只读,存代码和一转载 2012-11-12 20:29:41 · 452 阅读 · 0 评论 -
VC++的Unicode编程
先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FFH)被称为“扩展ASCII”,一般用来存放英文的制表符、部分音标转载 2012-11-28 16:27:31 · 440 阅读 · 0 评论 -
大数乘法。大数运算。“无限大数字”乘法。大数乘法两种方法对比
最近在看笔试题,得知大数运算是个经常考的题目。所以有兴趣试了试。一开始按照笔算方法自己写了个,但是时间复杂度是o(n3)。参考了网上的算法之后,修改了自己的算法,时间复杂度变成o(n2)。下面的测试结果中,两个2000位的数字(阿拉伯数字的位数)相乘,耗时90多毫秒。200位,1毫秒。可以看到,复杂度的确是N的平方级别。自己写的笨办法,每次累加之后都要判断是转载 2012-11-15 08:13:25 · 956 阅读 · 0 评论 -
通俗讲解!虚函数、函数重载、重写的区别
函数重载 如何讲函数重载: What——函数重载是什么? why——为什么要用函数重载,没有函数重载会怎样? how——举例说明怎么使用函数重载 ******************************************************************************* 能使名字方便使用,是任何程序设计语言的一个重要特转载 2012-11-16 16:21:09 · 1187 阅读 · 0 评论 -
我所理解的面向对象概念技术
* 所谓面向对象,就是把现实世界的所有物体对象化,可以是一个人,一座房子,一匹马等等. * 而我个人认为面向对象,首先要把面向与对象分开,在我们明确了对象之后,才可以考虑如何去面对它,而面对他并不是指你的脸面对向他,而是指我们如何去挖掘这个对象的实际的内涵。比如我们把一个人确定为对象,那么我们就应该考虑这个人具有什么样的外表特征,也就是我们所说的一个对象的属性,具体对人来说,是指他的身高、体原创 2012-12-04 09:04:34 · 501 阅读 · 0 评论 -
面向对象软件设计原则(一) —— 引子
“面向对象软件设计”这个术语及其相关话题对于很多开发人员来说已经是耳熟能详了,甚至听腻了。但是,对不住各位,为了吸引眼球和引起“异性” 注意,本座还是落入俗套选择这个热门话题作为本博客的开张炒作篇目。请见谅,也希望各位看官能放下架子,略读一下本系列的所有文章再喷,可赞可弹可BS, 但勿吐槽,毕竟不想因为本座的文字噪音降低看官的SZ,伤不起呀!! 言归正传,在如何阐述“面向对象软件设计转载 2012-12-04 17:01:19 · 523 阅读 · 0 评论 -
面向对象软件设计原则(四) —— 包的设计原则
随着应用程序的规模和复杂度的增加,需要在更高的层次对它们进行组织。类对于小型应用程序来说事非常方便的组织单元,但是对于大型应用程序来 说,如果仅仅使用类作为唯一的组织单元,就会显得粒度过细。因此,就需要比类“大”的“东西”来辅助大型应用程序的组织。这个“东西”就是包 (package)。 本节描述了6个原则。前3个原则关注包的内聚性,这些原则能够指导我们如何把类划分到包中。后3个原则关注转载 2012-12-04 17:07:33 · 909 阅读 · 0 评论 -
为什么说C++不是完全面向对象的语言
1) main函数不在任何类里面,因为这点,所以做不到完全面向对象,下面其他的都是可以解决的2)基本的数据类型也不是对象(从这点上看JAVA也不是完全面向对象的)3)友元会破坏封装性4)支持独立的函数,数据,即过程化编程其实所谓的完全面向对象,是一些人想出来的卖点,并没有太大的实际意义,难道把main包含进class这种语言就强大了?C++支持面向过程、基于对象、和面向对象转载 2012-12-04 16:52:24 · 832 阅读 · 0 评论 -
面向对象软件设计原则(五) —— 应用示例
现在我们看看一个实际的例子,从不同设计原则的角度来观察它的设计。这个例子是信息处理中心-数据传输控制组件的消息处理模块,首先看看它的结构图、类实现伪代码和主体程序伪代码: 图3-1 消息处理模块结构图 程序3-1 类实现伪代码/////////////////////////////////////转载 2012-12-04 17:08:33 · 624 阅读 · 0 评论 -
面向对象编程五大原则
在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是令设计者极为关注的问题。为此不少OO先驱提出了很多有关面向对象的设计原则用于指导OO的设计和开发。下面是几条与类设计相关的设计原则。 单一职责原则SRP:Single Responsibility Principle 开放封闭原则OCP:Open-Close Principle转载 2012-12-04 16:55:10 · 461 阅读 · 0 评论 -
面向对象软件设计原则(二) —— 软件设计的腐化
我们如何知道软件设计的优劣呢?以下是一些拙劣设计的症状,当软件出现下面任何一种气味时,就表明软件正在腐化。僵化性(Rigidity):很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动。脆弱性(Fragility):对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。牢固性(Immobility):很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。转载 2012-12-04 17:02:11 · 996 阅读 · 0 评论 -
面向对象软件设计原则(三) —— 软件实体的设计原则
提起面向对象,大家也许觉得自己已经非常“精通”了,起码也到了“灵活运用”的境界。面向对象设计不就是OOD吗?不就是用C++、Java、Smalltalk等面向对象语言写程序吗?不就是封装+继承+多态吗? 很好!大家已经掌握了不少对面向对象设计的基本要素:开发语言、基本概念、机制。Java是一种纯面向对象语言,是不是用Java写程序就等于面向对象了呢?我先列举一下面向对象设计的11个原则,转载 2012-12-04 17:04:06 · 1021 阅读 · 0 评论 -
关于main函数中argc和argv的简单介绍
一般来说,刚开始学习写程序的人员经常会碰到如下形式的main函数,int main(int argc, char** argv)或者int main(int argc, char* argv[]),或者void main(int argc, char** argv)或者void main(int argc, char* argv[]),细心点的初学者一定会发现,这里的main函数,有两个输入参原创 2012-12-08 08:17:58 · 500 阅读 · 0 评论 -
函数指针和指针函数
【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必转载 2012-12-13 21:57:55 · 363 阅读 · 0 评论 -
深入理解指针函数
1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。原创 2012-12-13 21:59:56 · 394 阅读 · 0 评论