自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leukotrichia的博客

C++资料整理

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 指针和内存可能引发的问题

 void GetMemory(char *p) {   p = (char *)malloc(100); } void Test(void){  char *str = NULL;   GetMemory(str);    strcpy(str, "hello world");   printf(str); }  请问运行Test函数会有什么样的结果? 答:程序崩溃。因为GetMemory并不能

2008-07-25 17:35:00 358

原创 在C/C++中如何使函数返回数组

 Java语言的函数可以轻易的返回一个数组,而C/C++却不能直接返回一个数组。这是由于在C/C++中,数组不是一种类型,因此不能被直接返回。    在C/C++中,一般有两种方法来返回一个数组。 第一种方法: 返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组 例子如下:#include

2008-07-25 14:10:00 3856 1

原创 使用const提高函数的健壮性

     看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。    const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书

2008-07-24 13:03:00 347

转载 最常见的20种VC++编译错误信息集合

 1、fatal error C1010: unexpected end of file while looking for precompiled header directive。  寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")  2、fatal error C1083: Cannot open include file: R…….h

2008-07-26 19:07:00 299

原创 困扰我很久的字符串和指针的问题

一直搞不明白直接被赋给指针的字符串(p="hello")是以什么形式存储在内存中的,今天终于解决了char *p; p=(char *)malloc(sizeof(p)*10); //P指向新开辟出来的内存区域strcpy(p,"hello");    //在新开辟出的内存区域里填充了字符串"hello". strcpy(p,"hello");的意思是把"hello"所在的内

2008-07-26 16:13:00 418

转载 学习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等词汇所迷惑——他们都是集成开发环境,而我们要

2008-07-26 15:47:00 348

转载 程序员忠告之--我该学什么开发语言?

 程序员忠告之一--我该学什么开发语言? 接触编程有多年了,也算积累了一些经验,希望能给刚入门的朋友一些帮助,文章仅代表本人观点,如有错误之处,还请多多包涵。  1.我该学什么语言?  PB、VB、VC、Delphi、Java……面对各种各样的编程语言,你是不是被弄昏了头脑呢?该学什么?“学VC吧!”许多高手说。并且还举了很有说服力的例子:“学VB只要两个月,学VC要一年,如果先学VB再学VC,所

2008-07-26 15:45:00 636

原创 程序员的爱情

using Life; using Life.Love; namespace love { /**//// /// love 的摘要说明。 /// public class love : Life.Love { void love(boy, girl) { if( boy.有房() && boy.有车() ) { boy.Set(Nothin

2008-07-25 17:58:00 344

原创 类的继承中可能会引发的一处错误

 如果A是基类,B是A的派生类,那么B将继承A的数据和函数。例如:class A{public: void Func1(void); void Func2(void);};class B:public A{public: void Func3(void); void Func4(void);};void main(){ B b; b.Func1(); //B从A继承了函数Func1 b

2008-07-24 00:07:00 576

原创 如何在派生类中实现类的基本函数

   基类的构造函数、析构函数、赋值函数都不能被派生类继承。如果类之间存在继承关系,在编写上述基本函数时应注意以下事项:  派生类的构造函数应在其初始化表里调用基类的构造函数。  基类与派生类的析构函数应该为虚(即加virtual关键字)。例如  #include <iostream.h>   class Base   {     public:     virtual  ̄Base() { c

2008-07-23 22:57:00 444

原创 拷贝构造函数与赋值函数

为了便于说明我们以String类为例:首先定义String类,而并不实现其成员函数。 Class String{public:     String(const char *ch=NULL);//默认构造函数     String(const String &str);//拷贝构造函数   ~String(void);    String &operator=(const String

2008-07-23 20:46:00 331

原创 令人迷惑的隐藏规则 

转自高质量C++/C编程指南 本来仅仅区别重载与覆盖并不算困难,但是C++的隐藏规则使问题复杂性陡然增加。这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。 (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字

2008-07-23 07:16:00 396

原创 内存耗尽错误处理程序对32位操作系统如同鸡肋?

转自《高质量C++/C编程指南》 如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。(1)判断指针是否为NULL,如果是则马上用return语句终止本函数。例如: void Func(void)  {   A  *a = new A;   if(a == NULL)   {    return;   }  

2008-07-22 22:09:00 620

原创 指针参数是如何传递内存的

如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例1中,Test函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么? void GetMemory(char *p, int num) {  p = (char *)malloc(sizeof(char) * num); } void Test(void) {  char *str 

2008-07-22 13:57:00 367

原创 malloc函数

malloc函数 原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include     (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使

2008-07-21 21:06:00 371

原创 常见的内存错误及其对策

  发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问题,你一走,错误又发作了。  常见的内存错误及其对策如下:1.内存分配未成功,却使用了它。   编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否

2008-07-21 20:24:00 418

原创 getchar隐藏的危险

函数名字与返回值类型在语义上不可冲突。    违反这条规则的典型代表是C标准库函数getchar。    例如:       char c;        c = getchar();        if (c == EOF)        …     按照getchar名字的意思,将变量c声明为char类型是很自然的事情。但不幸的是getchar的确不是char类型,而是int类型,

2008-07-20 00:00:00 445

原创 VC中判断数字和日期的方法

 VC中判断是否数字的方法方法一: int IsNum(CString str){  if (str.IsEmpty())    return  - 1;  int nDot = 0;  //数值只能是0到9及小数点组成  for (int i = 0; i   {    char ch = str.GetAt(i);    if ('.' == ch)    //小数

2008-07-17 13:51:00 559

原创 errorLNK2001错误分析

  学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。  初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:  un

2008-07-17 13:49:00 715

原创 指针和数组

  int x;说明了二个变量。int *ptr;声明指针 ptr。ptr=&ball;使指针 ptr 指向变量 ball。x=*ptr;*ptr 是指针所指地址内的内容。x 被赋值为 100  举例:define.hchar alpha[]="abcdefghijklmnopqrstuvwxyz";tmp.cpp

2008-07-17 13:48:00 260

原创 函数指针

  函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢?  如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。  定义一个指向函数的指针用如下的形式,以上面的test()为例:int (*fp)(int a);//这里就定义了一个指向函数的指针  函数指针不能绝对不

2008-07-17 13:45:00 209

原创 自动循环播放的MP3播放器

【实现内容】自动循环播放的MP3播放器    【应用】自动循环播放的MP3播放器主要用于企业文化的应用。在每天的休息时段,播放器自动循环播放指定的MP3音乐。本自动播放器主要根据本公司的情况编写,包括早上上班,中午吃饭和下午下班三个时间段各播放1小时左右的音乐。播放器启动后,只在托盘中有图标,配置好各个时间段的音乐目录后,不需要人工干预,音乐可以自动启动、循环播放和结束。    【 特点】

2008-07-17 13:27:00 1620

C++应用编程200例

包含了书中介绍的所有实例的200个源程序文件

2008-10-25

空空如也

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

TA关注的人

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