- 博客(21)
- 收藏
- 关注
转载 typedef和#define的用法与区别
一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性
2010-04-29 11:42:00 401 1
转载 WINFORM开发小技巧
技巧1,合理使用控件的Tag属性 几乎所有winform控件有都名为object类型的Tag属性,此属性多数情况下用来承载完整的数据源,相当于WEBFORM页面中hidden控件的作用,举个简单的例子C# code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Cod
2009-02-12 20:30:00 514
转载 Win32消息机制
Dos的过程驱动与Windows的事件驱动在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别:DOS程序主要使用顺序的,过程驱动的程序设计方法。顺序的,过程驱动的程序有一个明显的开始,明显的过程及一个明显的结束,因此程序能直接控制程序事件或过程的顺序。虽然在顺序的过程驱动的程序中也有很多处理异常的方法,但这样的异常处理也仍然是顺序的,过程驱动的结构。而Windo
2008-11-19 10:32:00 1759 2
转载 c++头文件一览表
传统 C++ #include //设定插入点 #include //字符处理 #include //定义错误码 #include //浮点数处理 #include //文件输入/输出 #include //参数化输入/输出 #include //数据流输入/输出 #include //定义各种数据类型最值常量
2008-11-10 10:55:00 527
转载 声明与定义
Declarations and Definitions As well see in Section 2.9 (p. 67), C++ programs typically are composed of many files. In order for multiple files to access the same variable, C++ distinguishes b
2008-11-07 11:01:00 405
转载 内联函数与宏定义
内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #define MAX(a,b) ((a)>(b)?(a):(b)) 该语句使得程序中每个出现MAX(a,b)函数调用的地方都被宏定义中后面的表达式((a)>(b)?(a):(b))所替换。 宏定义语句的书写格式有过分的讲究, MAX与括号之间不能有空格,所有的参数都要 放在括号里。尽管如此,它还是有麻
2008-11-07 10:49:00 3125 2
转载 static和const的比较和解释
static 是c++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用: 一、控制存储方式: static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间
2008-11-04 13:31:00 795 1
转载 memcpy 与 strcpy
strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可
2008-10-29 10:33:00 790 1
转载 关于位结构体
写出下列程序在X86上的运行结果。struct mybitfields{unsigned short a : 4;unsigned short b : 5;unsigned short c : 7;}test;void main(void) {int i;test.a=2;test.b=3;test.c=0;i=*((short *)&test);printf("%d ",i);}这个
2008-10-28 14:45:00 1692
转载 内存泄漏详解
对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以 应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java
2008-10-24 15:05:00 477
转载 数组与指针的关系
1,当我们定义一个一维数组int a[10]时,系统在内存中开辟十个内存空间,并且用a指向这块空间的开始,用来标识这块空间。那么这里的a就可以理解成一个指向空间首地址的指针,于是有这个样的关系式: a === &a[0] (===代表等价)。在等式两边同时加个星号*,得到这样的式子 *a === a[0]。由于a可以看成是指针,所以它可以实现移动。a+1 代表指针a向右移动一个单元,所以a+1
2008-10-11 16:02:00 501 1
转载 虚基类
在《多继承》中讲过的例子中,由类A,类B1和类B2以及类C组成了类继承的层次结构。在该结构中,类C的对象将包含两个类A的子对象。由于类A是派生类C两条继承路径上的一个公共基类,那么这个公共基类将在派生类的对象中产生多个基类子对象。如果要想使这个公共基类在派生类中只产生一个基类子对象,则必须将这个基类设定为虚基类。 虚基类的引入和说明 前面简单地介绍了要引进虚基类的原因。实际上,引进虚基类的真正
2008-10-08 10:47:00 592
转载 sizeof()
让我们先看一个结构体: struct S1 { char c; int i; }; 问sizeof(s1)等于多少聪明的你开始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。是这样吗你在你机器上试过了吗也许你是对的,但很可能你是错的!VC6中按默认设置得到的结果为8。 Why为什么受伤的总是我 请不要沮丧,我们来好
2008-10-07 13:36:00 523
转载 C/C++语言void及void指针深层探索
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来
2008-09-27 13:21:00 334
转载 虚函数
虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。 下面是对C++的虚函数这玩意儿的理解。 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始) 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进
2008-09-24 17:06:00 464
转载 C/C++内存区分配
一.在c中分为这几个存储区1.栈 - 有编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。 - 程序结束释放
2008-09-24 17:02:00 558 1
转载 malloc与new
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函
2008-09-24 17:00:00 739 1
转载 回调函数
Callback Function 什么是回调函数? 回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。通常情况下,回调函数采用标准Wind
2008-09-24 16:41:00 327
转载 C++虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这
2008-09-24 13:50:00 412
转载 标准强制类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介
2008-09-24 13:44:00 492
转载 c指针的内存详解
指针变量可以进行赋值运算、加减算术运算以及关系运算。 一、赋值运算 1、把一个指针变量的值赋给指向相同类型变量的另一个指针变量。如:int x,*ptr_x,*ptr_y;ptr_x=&x;ptr_y = ptr_x;指针 ptr_x 的值为变量 x 的地址。赋值语句将指针 ptr_x 的值赋给指针 ptr_y ,现在指针 ptr_x 和指针
2008-09-24 13:34:00 686
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人