摘要: 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。魔幻数组名请看程序(本文程序在WIN32平台下编译):Cpp代码 #include<iostream.h> intmain(intargc,char*argv[]) { charstr[10]; char*pStr=str; cout<<sizeof(str)<<endl; cout<<sizeof(pStr)<<endl; return0; }#include <iostream.h>int 阅读全文
posted @ 2012-08-29 15:17 荔枝林 阅读(353) 评论(0) 推荐(0)
摘要: “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。“野指针”的成因主要有两种:1 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如Cpp代码char*p=NULL; char*str=(char*)malloc(100);char *p = NULL;char *str = (char *) malloc(100);2 指针p被free或者 阅读全文
posted @ 2012-08-29 14:57 荔枝林 阅读(220) 评论(0) 推荐(0)
摘要: 方便用的时候查询收藏起来:GetDeviceCaps是VB程序中的一个函数,这个函数可以访问使用设备描述表的设备数据,应用程序指定相应设备描述表的句柄和说明该函数访问数据类型的索引来访问这些数据。根据指定设备场景代表的设备的功能返回信息 参数类型及说明hdcLong,要查询其设备的信息的设备场景nIndexLong,根据GetDeviceCaps索引表所示常数确定返回信息的类型编辑本段C++参数 1、hdc:设备上下文环境的句柄。 2、nIndex:指定返回项,该参数取下列一值。(C++) DRIVERVERSION:设备驱动程序版本。 TECHNOLOGY:设备技术,它可以是下列一... 阅读全文
posted @ 2012-08-16 11:47 荔枝林 阅读(1463) 评论(0) 推荐(1)
摘要: 作用:读取DC的一些打印区域信息,主要是像素和英寸方面的数据.声明:GetDeviceCaps(int )使用例子://所有像素数int pagecx=dc.GetDeviceCaps(HORZRES);int pagecy=dc.GetDeviceCaps(VERTRES);//即每英寸点数short cxInch = dc.GetDeviceCaps(LOGPIXELSX);short cyInch = dc.GetDeviceCaps(LOGPIXELSY);// 计算一个设备单位等于多少0.1mmdouble scaleX = 254.0 / (double)GetDeviceCaps 阅读全文
posted @ 2012-08-16 11:43 荔枝林 阅读(8082) 评论(0) 推荐(1)
摘要: 请牢记以下3条原则:(在没有#pragma pack宏的情况下)1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)3:收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部 阅读全文
posted @ 2012-08-16 10:20 荔枝林 阅读(370) 评论(0) 推荐(0)
摘要: 位图BITMAPINFOHEADER 与BITMAPFILEHEADER:先来看BITMAPINFOHEADER,只写几个主要的biSize包含的是这个结构体的大小(包括颜色表)biWidth和biHeight分别是图片的长宽biPlanes是目标绘图设备包含的层数,必须设置为1biBitCount是图像的位数,例如24位,8位等biXPelsPerMeter, biYPelsPerMeter 是现实世界中每米包含的像素数 设为3780即可biSizeImage 图像数据的大小 = biWidth X biHeight X biBitCount------------------------- 阅读全文
posted @ 2012-08-16 10:07 荔枝林 阅读(68088) 评论(3) 推荐(12)
摘要: TrackMouseEvent函数TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);参数lpEventTrack是一个指向TRACKMOUSEEVENT结构体的指针。函数执行成功的话返回非零值(true),否则返回零(false)。该函数可以发送的消息包括:WM_MOUSEHOVER鼠标在窗口的某一客户区上停留上一次调用TrackMouseEvent函数时所设定的时间长度时发送。在该消息产生之后将停止跟踪,如果需要进一步跟踪鼠 阅读全文
posted @ 2012-08-14 15:52 荔枝林 阅读(725) 评论(0) 推荐(0)
摘要: 1.新建对话框MFC,在对话框上放一个ListCtrlID:IDC_PATHView:Report2.为ListCtrl添加变量右击->添加变量m_wndPath3.找到OnInitDialog()函数添加如下代码://TODO:在此添加额外的初始化代码m_wndPath.DeleteAllItems();//清空m_wndPath.InsertColumn(0,_T("项目"));//添加列m_wndPath.InsertColumn(1,_T("所在路径"));m_wndPath.SetColumnWidth(0,150);//设置列宽m_wn 阅读全文
posted @ 2012-08-14 11:14 荔枝林 阅读(8014) 评论(0) 推荐(1)
摘要: 谈到链表之前,先说一下线性表。线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表有两种存储方式,一种是顺序存储结构,另一种是链式存储结构。 顺序存储结构就是两个相邻的元素在内存中也是相邻的。这种存储方式的优点是查询的时间复杂度为O(1),通过首地址和偏移量就可以直接访问到某元素,关于查找的适配算法很多,最快可以达到O(logn)。缺点是插入和删除的时间复杂度最坏能达到O(n),如果你在第一个位置插入一个元素,你需要把数组的每一个元素向后移动一位,如果你在第一个位置删除一个元素,你需. 阅读全文
posted @ 2012-08-14 09:47 荔枝林 阅读(354) 评论(0) 推荐(1)
摘要: 转载:栈(stack)是限制插入和删除只能在一个位置上进行的线性表,该位置在表的末端,叫做栈顶。添加元素只能在尾节点后添加,删除元素只能删除尾节点,查看节点也只能查看尾节点。添加、删除、查看依次为入栈(push)、出栈(pop)、栈顶节点(top)。形象的说,栈是一个先进后出(LIFO)表,先进去的节点要等到后边进去的节点出来才能出来。如图1,是一个栈的形象图,top指针指向的是栈顶节点,所以我们可以通过top访问到2节点,但是0和1节点由于先于2进入这个表,所以是不可见的。如果把0节点当做头节点,2节点当做尾节点,那么栈限制了访问权限,只可以访问尾节点。如图2,当添加一个节点3的时候,只能在 阅读全文
posted @ 2012-08-14 09:46 荔枝林 阅读(357) 评论(0) 推荐(1)