C/C++
篷篙人
这个作者很懒,什么都没留下…
展开
-
MFC中UpdateData的用法
UpdateData(FALSE)——程序中修改了变量的值,在对话框中刷新显示。UpdateData(TRUE)——对话框中修改了输入的值,刷新程序中变量的值。原创 2008-08-20 09:59:00 · 973 阅读 · 0 评论 -
C语言实现有限状态机
以下是转载内容:☆─────────────────────────传说中的分隔符───────────────────────────────────────☆ 来源1:http://www.cnblogs.com/swingboat/archive/2005/07/27/201488.html【转载1】有限状态机的实现 有限状态机(Finite State Machine转载 2009-09-16 10:38:00 · 7175 阅读 · 3 评论 -
C语言编译全过程
C语言编译全过程 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf转载 2009-08-24 16:27:00 · 911 阅读 · 0 评论 -
C/C++中函数指针的含义
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);//这里就定义了一个指向函数的指针 函数指针不能绝对不能指向不同类型,转载 2009-03-25 16:01:00 · 586 阅读 · 0 评论 -
break 和 contine的区别
举个例子吧: ....... sum = 0 for(i = 0;i if(i == 4) break; if(i == 2) continue; sum += i; } ....... 结果为:sum 为 0+1+3=4 循环计算累加和,放在sum中 过程如下:i从0开始循环,每次i++。当i == 2的时候,执行continue,跳过sum += i这句,继续循环,也就是说,2并没有加到sum转载 2009-02-20 23:34:00 · 1338 阅读 · 0 评论 -
堆和栈的区别
非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两转载 2009-02-06 21:42:00 · 895 阅读 · 1 评论 -
VC如何调用DLL文件
调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。Windows提供了两种将DLL映像到进程地址空间的方法:1. 隐式的加载时链接这种方法需要DLL工程经编译产生的LIB文件,此文件中包含了DLL允许应用程序调用的所有函数的列表,当链接器发现应用程序调用了LIB文件列出的某个函数,就会在应用程序的可执行文件的文件转载 2009-01-18 12:19:00 · 13931 阅读 · 2 评论 -
C语言中宏定义的一个变态用法
在程序调试时,我们经常需要输出一些调试信息,当调试完毕后,就不再需要使用了。那怎么快速的在调试状态和发布状态切换呢?通常我们使用预编译加宏定义来处理这个问题,例如:#ifdef DEBUG 调试代码#endif如果我们使用printf来显示一些调试信息,那么每个地方都加上#ifdef和#endif就很麻烦了。我们可以定义一个DbgPrintf的函数来专门处理这些事情,只在DbgPrintf转载 2009-01-18 12:05:00 · 1408 阅读 · 1 评论 -
#pragma指令使用简介
在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助! 一. message 参数。 message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条指令转载 2009-01-16 16:12:00 · 627 阅读 · 0 评论 -
C++中计算程序的运行时间
一个程序的功能通常有很多种方法来实现,怎么样的程序才算得上最优呢?举个例子,如果实现同一个功能的两个程序,一个一点按钮就给出运行结果,而另一个则需要漫长的时间去等待,就像安装WINDOWS XP一样(呵呵,太夸张了吧),你会去使用哪个程序呢?毋庸置疑,最优程序的第一条法则就是:程序的运行速度要快。 那么,既然一个程序能用多种方法来实现,我又如何知道哪种方法是最优的呢?有些程序是显而易见转载 2009-01-15 16:27:00 · 634 阅读 · 0 评论 -
常量指针与指针常量
首先,我告诉大家一个小规则,就是像这样连着的两个词,前面的一个通常是修饰部分,中心词是后面一个词,怎么说呢。就像这里的常量指针和指针常量。 常量指针,表述为“是常量的指针”,它首先应该是一个指针。 指针常量,表述为“是指针的常量”,它首先应该是一个常量。 我再分开细细说明,常量指针,它是一个指针,什么样的指针呢?它是一个指向常量的指针,就是说我们定义了一个常量,比如 const i转载 2009-01-15 16:26:00 · 504 阅读 · 0 评论 -
typedef的四个用途和两个陷阱
用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 虽然: char转载 2009-01-15 16:21:00 · 501 阅读 · 0 评论 -
error LNK2019: unresolved external symbol @24问题
用visual 2005 编程事如果报error LNK2019错误,unresolved external symbol ,那么多半是由于你没有加入相关库引起的。在@后面会有相关函数,利用该函数查找相关库,在link设置中加入即可。原创 2009-01-15 16:15:00 · 498 阅读 · 0 评论 -
visual 2008 中OpenCV的配置
1.在http://www.opencv.org.cn上下载最新的OpenCV安装程序,并安装,安装时选择“将/OpenCV/bin加入系统变量”,否则需要在“我的电脑”—>“属性”—>“高级””—>“环境变量”中添加上述变量2.对visual2008进行相关的全局设置。运行visual2008,单击菜单栏上的“工具”,然后在下拉菜单中选择“选项”,弹出“选项”对话框。在弹出对话框中选择“项目原创 2008-09-19 23:21:00 · 2254 阅读 · 0 评论 -
如何在MFC中使用动态链接库
1.隐式链接加载动态链接库如果有XXX.h ,XXX.lib,XXX.dll,这样就可以隐式链接加载了。在所要引用的.cpp文件中加入#include “XXX.h” //包含静态链接库的头文件#pragma comment(lib,"XXX") //隐式调用库文件这样就可以使用dll中封装的函数了。其中语句“#pragma comment(lib,"XX原创 2008-08-22 08:42:00 · 9023 阅读 · 0 评论 -
CView里的OnDraw()函数是在什么时候被调用的
视图绘画机理 在VC++的文档、视结构中, CView的OnDraw函数用于实现绝大部分图形绘制的工作。 如果用户改变窗口尺寸,或者显示隐藏的区域, OnDraw函数都将被调用来重画窗口。并且, 当程序文档中的数据发生改变时, 一般必须通过调用视图的Invalidate(或InvalidateRect) 成员函数来通知Windows所发生的改转载 2008-08-19 14:23:00 · 7756 阅读 · 2 评论 -
数组的奇妙
定义一个数组 int a[] = "123123"; 你会发现a[2]和2[a]输出的结果是一样的。原创 2009-09-17 16:39:00 · 861 阅读 · 0 评论