
一点小结
文章平均质量分 57
gukesdo
这个作者很懒,什么都没留下…
展开
-
对递归的一些理解
1.首先要明白一般在一个函数调用其他函数的过程中堆栈的操作情况: 当在一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需先完成3件事:(1)将所有的实在参数、返回地址等信息传递给被调用函数保存;(2)为被调用函数的局部变量分配存储区;(3)将控制转移到被调函数的入口。而从被调用函数返回调用函数之前,系统也应完成3件工作:(1)保存被调函数的计算结果;(2)释放被调函数的数据区;(3)依照被调函数保存的返回地址将控制转移到调用函数。当有多个函数构成嵌套调用时,按照“后调用先返回”的原则原创 2011-04-02 14:36:00 · 810 阅读 · 0 评论 -
MFC从一个对话框向另外一个对话框发送消息
<br />/*方法一:通过用SDK的标准API来查找其他对话框窗口返回句柄,并且发送信息<br />HWND hWnd;<br /> //通过SDK的FindWindow函数得到目标窗口的句柄,TriTest为目标串口的Caption的值<br /> if(!(hWnd = ::FindWindow(NULL,"TriTest")))<br /> AfxMessageBox("Error!");<br /> //通过SDKSendMessage向目标窗口发送EDGE_MESSAGE消息,此消息在st原创 2011-04-02 20:07:00 · 4658 阅读 · 1 评论 -
C++生成伪随机数
使用srand((time(NULL)))使用系统时间作为生成数种子,然后使用rand()%MAX+1生成从1到MAX的随机数。 为了使用srand()和rand()要包含cstdlib.h;为了使用time()要包含ctime.h。 下面这段代码就是生成数据并写入到original.txt中,所以还要包含fstream.h。#include #include #include #include using namespace std;/***生成伪随机数,每行15个从1到1原创 2011-04-10 09:56:00 · 1528 阅读 · 0 评论 -
C++读取以空格作为数据区分标记,以回车为行标记的txt文件到一个整数数组(字符串妙用)
这次读取的就是上一篇中的original文件的每一行到一个整数数组中。 使用getline(缺省吧回车符endl作为行标记)分别把每一行读入到一个字符串数组,在这个字符数字最后加上/0构成一个字符串; 使用strtok函数把每行组成的字符串以空格为标记划分多个单元返回为一个char*类型值pchTok; 然后把pchTok使用atoi转化为int类型每个存入到一个整型数组的每个单元中sortArray[i]中; 之后把数组使用堆排序算法排序后按照对齐格式输出到另外一原创 2011-04-10 10:12:00 · 13103 阅读 · 0 评论 -
使用大堆和小堆实现从小到大排序,且空间开销为O(1)
<br />大堆:<br />#include "heapSort.h"<br />#include <iostream><br />#include <string><br />#include <fstream><br />#include <iomanip><br />using namespace std;<br />#define ARRAY_SIZE 1000<br />int heapcount = 0;//记录总共的比较次数<br />void FixHeap(int L[], int H原创 2011-04-10 10:32:00 · 1899 阅读 · 0 评论 -
C++中异常处理的工作方式
<br />#include <iostream><br />using namespace std;<br />class Rainbow{<br />public:<br /> Rainbow(){cout << "Rainbow() " << endl;}<br /> ~Rainbow() { cout << "~Rainbow()" << endl; }<br />};<br />void oz(){<br /> Rainbow rb;<br /> for(int i = 0; i < 3; i +原创 2011-04-12 19:14:00 · 778 阅读 · 0 评论 -
关于void*类型的用法(目前自己所能想到的)
1.C++语言在对于void* 类型的使用很特别,因为void* 可以间接引用任何其他数据类型的指针,比如int*、float*甚至抽象数据类型的指针,而且可以从void* 强制转换为任何其他数据类型的指针,所以使用起来有时候会比较危险。如果开始将一个void*的指针间接引用一个float*的指针,然后将这个void*指针强制转化为一个int*类型的指针,编译器不会给出错误甚至警告,但是输出的数据却匪夷所思,如果再强制转换会float*则不会出现任何问题; 在后来发现,C++语言中(使用v原创 2011-04-17 20:36:00 · 7776 阅读 · 1 评论 -
C++语言的数据空间分配
<br /> 对于static、const或者全局变量会有一块专门的静态数据区来保存,之后就可以在这种类型的生命期和访问范围内来使用对应类型的变量,这些类型的变量在编译期间就已经划分好存储区域并完成存储;<br /> 对于特定函数内部的局部变量,会在编译期间分配好其所需空间的大小,但是并不知道其某个变量的具体存储的地址(在内存中的位置),只会在运行的时候才会实时分配给变量具体的地址,这些变量所分配的存储空间实在程序运行时的栈上分配的,运行时分配和释放的方式、大小和时机都有编译器决定,是以压栈和弹原创 2011-04-17 20:56:00 · 1078 阅读 · 0 评论 -
动态创建高维数组
数组可以进行静态创建和动态创建,平时最常用的还是动态创建:动态创建一维数组,测试代码如下:int *array1; int n; cin >> n; array1 = new int[n]; for (int i = 0; i { array1[i] = i; } for (int j = 0; j { cout }动态创建二维数组,测试代码如下:int **array2原创 2011-06-11 12:18:00 · 1624 阅读 · 0 评论 -
二维(及高维)数组指针意义和使用
以前以为数组很简单,现在发现原来是自己很肤浅,昨天写了一段代码总是越界一晚上也没搞清楚是怎么回事,现在才发现是在对二维数组的指针引用上出错了,下面是目前发现几种形式:1. 首先静态二维数组如何作为参数传入函数形式:void myfunc(char sToken[][100])或 void myfunc(char (*sToken)[100])是等价的!2.静态二维数组元素a[i][j]原创 2011-06-10 14:15:00 · 2582 阅读 · 1 评论 -
指针类型的确定
在定义指针的时候可能遇到层层嵌套的定义,有时候一眼看上去无法判断,可以根据以下步骤从内层一层一层进行判断:1.首先找到定义的标识符(即变量名);2.根据标识符左右两边的运算符的优先级和结合性进行一层一层的划分,用括弧标出来。*结合的第一个标识符决定了定义的指针总体类型。如int (*(p[n]))就是一个数组 int (*(p()))就是一个函数;3.然后从第一层开始用手去掉最内层的*原创 2011-06-10 16:35:00 · 1128 阅读 · 0 评论 -
stdcall、cdecl调用约定方式详解
在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递转载 2011-06-17 11:08:00 · 1086 阅读 · 0 评论 -
如何修改MFC单文档的“无标题”、中间的横线、后面的窗口标题。
替换“无标题”为其他文字:在C***Doc::OnnewDocument(){SetTitle(L"我的程序");}更改后面的窗口标题:在CMainFrm::PreCreateWindow(){m_strTitle = "我的标题";cs.style &= ~FWS_ADDTOT原创 2011-07-07 20:59:00 · 4253 阅读 · 0 评论 -
Junit基础使用
在这里看到一个不错Junit的基础中的基础,网址是:http://lavasoft.blog.51cto.com/62575/65625下面转自:http://www.blogjava.net/liaojiyong/archive/2007/01/18/94651.htm原创 2011-08-31 21:30:02 · 705 阅读 · 0 评论 -
Junit总体描述的不错网址
1. 测试框架Junit http://www.worlduc.com/blog.aspx?bid=18892. 用Junit实现java单元测试 http://www.bitscn.com/plus/view.php?aid=233593. 单元测试作业指导书Ju原创 2011-08-31 22:22:49 · 664 阅读 · 0 评论 -
关于预处理指令
常用的预处理指令1. ifdef / ifndef endif//2. #define3. #pragma message / once(只要在头文件开头加入这个指令,就可以保证这个头文件只被编译一次) / hdrstop(表示预编译头文件到此为止,后面的头原创 2011-09-01 21:53:17 · 683 阅读 · 0 评论 -
Junit指定运行的测试方法
有一篇不错的日志,网址是:http://blog.youkuaiyun.com/lsj6730960/article/details/6159992 public static Test suite() { //以下是用来增加单个测试用例,测试用例类的名称为RunTime原创 2011-08-31 21:55:53 · 3831 阅读 · 0 评论 -
Windows是不是每个线程都有消息队列的问题
今天从网上搜集了下,加上试了一个小程序,感觉下面的一种说法是比较准确地。http://cnn237111.blog.51cto.com/2359144/606954 在Windows应用程序中,操作系统会监控计算机上的键盘和鼠标等输入设备,为每一个输入事件(由用户操作所原创 2011-09-04 21:17:27 · 3751 阅读 · 1 评论 -
MFC中用户自定义消息及其响应函数的方法
1.在对应类的头文件中自定义消息如:#define WM_RESULT WM_USER+12.在头文件中定义消息响应函数,注意:这个函数的返回值必须是LRESULT 参数必须是 WPARAM 和LPARAM类型。这是因为afx_msg void OnMyMessage原创 2011-09-05 20:53:45 · 9427 阅读 · 1 评论 -
窗口线程是由消息线程发展出来的
开始以为创建的子线程没有执行,后来加入延时之后才发现本来也是执行了的。刚开始看多线程,跟大家分享下,还望多多指教,呵呵~#include #include using namespace std;LRESULT CALLBACK WndProc(HWND,UINT原创 2011-09-04 21:27:06 · 1721 阅读 · 0 评论 -
MFC中用户自定义消息的消息响应函数原型
刚开始用MFC一般都是由class wizard自动生成消息、消息映射以及消息响应函数原型,后来写代码的时候用到自定义消息,这时就要写自己的消息映射和消息响应函数,这个时候才发现对于不同消息的关联宏对于响应函数的原型,通过查MSDN总结了以下几种形式,以后如果遇到不同映射宏的时候原创 2011-09-06 21:10:22 · 2258 阅读 · 0 评论 -
MFC中使用SendMessage、PostMessage、PostThreadMessage
先看MSDN中解释:BOOL PostThreadMessage( UINT message , WPARAM wParam, LPARAM lParam );Called to post a user-defined message to原创 2011-09-06 21:40:12 · 10085 阅读 · 2 评论 -
MFC中从一个类向其他类发送消息的方法
假设准备从A类向B类发送一个消息WM_MSG首先:在B类中定义这个用户自定义消息,消息响应函数,并关联消息和消息响应函数然后:在A类头文件中包含B类的头文件,并定义一个B类类型的指针成员变量,假设为*memB;之后就可以使用memB->PostMessage()或者P原创 2011-09-06 21:45:27 · 4609 阅读 · 2 评论 -
关于回调函数
以前对这个概念不理解,以为只有__stdcall类型的函数才是回调函数,今天经师兄一说,然后上网查了一些东西,才发现这只是操作系统的回调函数类型而已,回调函数的概念是很广泛的,觉得下面这篇文章说得很好,转自:http://blog.sina.com.cn/s/blog_43e64原创 2011-09-07 20:49:32 · 828 阅读 · 0 评论 -
MFC中的消息循环
最近看了一点windows和MFC方面的东西,对于而这消息机制有点感触,写出来和大家分享,不对之处还请大家拍砖指正: 在写windows应用程序的时候,都会有一个消息循环,使用GetMessage+while+switch case结构来实现消息的捕捉、分配和响应。实际上原创 2011-09-06 21:16:26 · 1575 阅读 · 0 评论 -
回调函数的原理
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/woyaowenzi/archive/2009/03/02/3950116.aspx回调函数原理声明CALLBACK 调用(calling)机制从汇编时代起已经大量使用:准备一段现成转载 2011-09-07 21:24:16 · 1103 阅读 · 1 评论 -
MFC类继承层次图
上图是分类图,下图为详细继承关系图:原创 2011-09-06 21:19:47 · 7546 阅读 · 0 评论 -
在MFC中定义线程对应的线程执行函数
线程执行函数一般和创建的线程写在一个头文件中,并不是MFC某个类的成员函数。直接定义如下:DWORD WINAPI Recvthread(LPVOID lpparam);形式即可线程共享的变量也在这个文件中进行定义;该线程执行函数对应的线程创建如下:::Creat原创 2011-09-05 20:59:01 · 2665 阅读 · 0 评论 -
如何判断系统栈的增长方向(stack growth direction)
对于一个用惯了i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。C是一个不错的选择。那接下来的问题就是如何用C在哪里会用到栈呢?稍微了解一点等一下,怎么比较两个变量的地址呢?“先声明的先入栈那就函数加个参数,比较参数和局部变量的位置,参数肯定先入栈。那为什么不能局部变量先入栈?第一反应是怎么可能,但仔细想来又没有什么不可以。所以,这种方法也依赖于编译器的实现。不妨回原创 2011-06-16 12:02:00 · 2986 阅读 · 0 评论 -
由这段代码发现的printf参数的入栈顺序
#include #include int a[5];void Thread( void * pParam){ int i, num = 0; while (1) { for (i = 0;i { a[i] =num;原创 2011-09-09 22:11:51 · 1174 阅读 · 0 评论 -
关于Windows程序的一些东西(断点、头文件)
以前虽然写一些Windows程序,但是一些东西并不懂,今天向一位编程牛X的同学请教,学到一些东西。1.断点调试如何从一个断点跳转到下一个断点。调试时候必须把程序设置为debug模式,断点调试有三种模式,逐语句F10、逐过程F11、跳转F5。从一个断点跳转到另一个断点就是F原创 2011-08-20 11:03:09 · 1440 阅读 · 0 评论 -
关于namespace
namespace 是C++的一个关键字 。实际上,它只是起到标识作用,把全局的变量,函数,类等放到一起,细化管理。并且namespace还可以嵌套定义。#include #include using namespace std; names原创 2011-08-20 22:19:14 · 799 阅读 · 0 评论 -
Windows程序使用控制台输出监视的变量(原来这样也可以)
Windows程序进行调试进行变量监视的时候,一般通过监视窗口进行,但是这样有时候切来切去很麻烦,今天向同学请教发现了一种可以用控制台监测变量的方法。只需#include #include //使用函数printf#include //是用宏_T然后AllocCo原创 2011-08-20 11:37:25 · 2463 阅读 · 0 评论 -
sqlserver所用端口、端口设置
SQL Server数据库如何更改SA密码和默认端口号2011-07-25 18:41 qq752923276 优快云博客 我要评论() 字号:T | T本文主要介绍了SQL Server数据库更改SA密码、更改默认端口以及ADO连接字符串指定端口号的设置,希望能对您有所帮原创 2011-09-19 20:41:43 · 30282 阅读 · 0 评论 -
数据库实例
http://topic.youkuaiyun.com/u/20090802/19/9ca5a83e-b874-4e81-b658-9bcf952b011c.html 1. 所谓的“实例”,就是一个SQL Server数据库引擎。SQL Server 2000支持在同一台计算机上同时原创 2011-09-19 20:39:50 · 1480 阅读 · 0 评论 -
c++ Socket编程流程
最近两天在学习c++的socket编程,大致流程已经搞清楚,今天晚上用控制台模拟了下通信流程,现在拿出来和大家分享一下,如果有错误还请多多指正。#include #include #include "winsock.h"#pragma comment(lib, "原创 2011-08-24 22:15:34 · 1323 阅读 · 0 评论 -
在同一个解决方案下,如何从一个工程中调用另外一个工程的函数
摘自http://9200cs.blog.163.com/blog/static/13457736920106695350747/两个项目分别是test1和test2,test1中有一个函数fun()被test2调用,用法如下://test1.hint fun原创 2011-09-21 21:27:32 · 12017 阅读 · 1 评论 -
关于extern "C"的一篇很好的文章
还有一篇很不错,有示例验证来自:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html转自:http://tech.163.com/06/0118/09/27O66HCC0009159Q.html时常在转载 2011-09-24 13:38:39 · 661 阅读 · 0 评论 -
vs下制作和使用.lib静态库
关于链接库的讲解在这个网址上有不错的讲解:http://www.360doc.com/content/11/0805/17/6675409_138289992.shtml下面写一下自己的实践:首先可以创建一个空工程,然后再工程属性---configuration prop原创 2011-09-24 12:37:19 · 15442 阅读 · 0 评论 -
c++的工程文件的编译顺序
以前一直以为,vs在编译c++文件时候是从头文件开始编译的,而每个头文件对应的源文件只是头文件定义中的一些实现而已,源文件不参与编译。今天经过同学指点并实践之后才发现,其实不是这样的,从中受益颇多:c++编译的时候实际上只编译源文件,而不编译头文件;编译源文件的时候实际上原创 2011-09-24 13:01:22 · 11176 阅读 · 3 评论