
编程基础
文章平均质量分 84
passball
这个作者很懒,什么都没留下…
展开
-
链表、头指针、头结点
图1为线性表(ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG)的逻辑状态。头指针指示链表中第一个结点(即第一个数据元素的存储映像)的存储位置。同时,由于最后一个数据元素没有直接后继,则线性链表中最后一个结点的指针为“空”(NULL)。 图1 线性链表的逻辑状态由上述描述可见,单链表可由头指针来唯一确定,在C语言中可用“结构转载 2011-01-09 21:26:00 · 14610 阅读 · 2 评论 -
最小二乘法拟合直线 c++程序
//point.hclass Point //Point类的声明{public: //外部接口Point(float xx=0, float yy=0) {X=xx;Y=yy;}float GetX() {return X;}float GetY() {return Y;}friend float linefit(Point l_point[], int n_point); //友元函数//int转载 2009-05-21 20:53:00 · 7283 阅读 · 0 评论 -
如何学习编程
本篇将是一个系列,重点讲述在外力很少的情况下如何自学编程,以及需要注意的一些地方。 一般来说,一些所谓的『高手』或者老师会告诉人们算法是非常非常重要以至于会不会算法就是你会不会编程的唯一标准。不过事实上并非如此。掌握算法固然是好,只是大部分程序并不需要高深的算法,而且招人的时候仅仅要求会算法的公司也是很少的(而且很难进)。我并不是学院派的人,所以虽然我本人也推崇学习算法,但并不推转载 2009-05-19 20:53:00 · 894 阅读 · 0 评论 -
数组作参数
http://bigwhite.blogbus.com/logs/2144933.html C语言中的数组和指针总保持着千丝万缕的联系,这里仅针对数组作为函数实参时的情况做些说明^_^。C语言中的数组可分为一维数组和多维数组两类,而多维数组中又以二维数组最为常见。这里也仅针对这一维数组和二维数组作简要说明。看过高质量C++编程指南的人可能都知道书中有这样一句注意当数组作为转载 2009-05-07 19:58:00 · 1137 阅读 · 0 评论 -
malloc函数
malloc函数函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。 从函数声明上可以看出。malloc 和 new 至少有两个不同: new 返回指定类型的指针,并原创 2009-04-17 16:42:00 · 716 阅读 · 0 评论 -
用c++写成的最小二乘法的源代码
#include #include #include #include #define N 5//N个点#define T 3 //T次拟合#define W 1//权函数#define PRECISION 0.00001float pow_n(float a,int n){int i;if(n==0)return(1);float res=a;for(i=1;i{res*=a;}return原创 2009-04-09 16:14:00 · 3883 阅读 · 0 评论 -
C/C++数组名与指针区别
C/C++数组名与指针区别 引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着转载 2009-03-30 11:41:00 · 594 阅读 · 0 评论 -
推荐!国外程序员整理的 C++ 资源大全
摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库C++ Standard Library:...转载 2014-10-26 21:12:32 · 1337 阅读 · 0 评论 -
C++全局变量的声明和定义
参考:http://wrchen.blog.sohu.com/71617539.html(1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。 那么,错误可能在两个地方产转载 2014-10-08 22:34:16 · 754 阅读 · 0 评论 -
C预处理指令
原文地址:http://www.51cto.com/html/2005/0927/3844.htm一、预处理的由来:在C++的历史发展中,有很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C语言预处理器,被Bjarne博士简称为Cpp,不知道是不是C Program Preprocessor的简称)。二、常见的预处理功能:预处理转载 2009-09-30 11:22:00 · 753 阅读 · 0 评论 -
用calloc()函数分配内存
<br />在<stdlib.h>头文件中声明的calloc()函数与malloc()函数相比有两个优点。第一,它把内存分配为给定大小的数组,第二,它初始化了所分配的内存,所有的位都是0。calloc()函数需要两个参数:数组的元素个数和数组元素占用的字节数,这两个参数的类型都是size_t。该函数也不知道数组元素的类型,所以所分配区域的地址返回为void *类型。<br />下面的语句使用calloc()为包含75个int元素的数组分配内存:int *pNumber = (int *) calloc(75转载 2010-08-07 17:46:00 · 1834 阅读 · 0 评论 -
字符串的存储方式以及静态存储区域、栈、堆
<br />下面两篇文章分析得比较详细.转自http://blog.youkuaiyun.com/yangdelong/archive/2010/04/03/5447362.aspx<br />文章来源 http://blog.youkuaiyun.com/shiwei0124/archive/2009/11/26/4877546.aspx<br />字符串的存储方式以及静态存储区域、栈、堆<br />在编程的时候偶尔会遇到一个字符串的问题,好像是这样说:不能把 const char* 转换成 TCHAR * ,只是这个错误有时候转载 2010-12-28 20:29:00 · 1266 阅读 · 0 评论 -
c/c++中指针参数如何传递内存!
内存的分配何管理一直让许多c++爱好者头痛不已,不仿看看下面的东西!来自林锐的《高质量c++编程指南》指针参数是如何传递内存的?<br /> 如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1中,Test函<br />数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么?<br /> <br /><br /> <br />void GetMemory(char *p, int num)//zbf:感觉非常隐蔽,设计错误<b原创 2010-12-28 20:31:00 · 839 阅读 · 0 评论 -
递归算法详细分析-> C
<br />C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。<br /> 许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。<br /> 这里有一个简单的程序,可用于说明递归。程序的目的是把一个整数从二进制形式转换为可打印的字符原创 2010-11-21 21:26:00 · 622 阅读 · 0 评论 -
计算机编码简介(ASCII、ANSI、EBCDIC、Unicode)
<br />1) ASCII(American Standard Code for Information Interchange,美国信息交换标准码)是使用最广的。使用ASCII码编码的文件称为ASCII文件。标准的ASCII编码使用7个二进制数来表示128个符号,包括英文大小写字母、标点符号、数字和特殊控制符。<br />2) ANSI(American National Institute,美国国家标准协会)编码使用8位二进制数来表示每个字符。8个二进制数能表示256个信息单元,因此,该编码可以对25转载 2010-08-24 22:58:00 · 1538 阅读 · 1 评论 -
Const 深度解析
面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重 const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 const in转载 2009-04-10 10:15:00 · 655 阅读 · 0 评论 -
算法时间复杂度的计算
<br />近几年的信息学奥林匹克竞赛中,所有的试题都要求1秒钟内出结果,那么如何度量一个算法的时间复杂度就成为每个OI选手必须具有的基本功,要能在数据范围给定的情况下作出正确算法的选择。<br />算法的时间复杂度是一个算法运行时间的相对量度。一个算法的运行时间是指在计算机上从开始到结束运行所花费的时间长短,它大致等于计算机执行一种基本操作(如赋值、比较、计算、转向、返回、输入、输出等)所需的时间与算法中进行基本操作次数的乘积。因为执行一种基本操作所需的时间随机器而异,它是由机器本身硬软件环境决定的,与算原创 2010-12-24 19:48:00 · 2672 阅读 · 0 评论 -
unsigned char与char的区别
两者都作为字符用的话是没有区别的,但当整数用时有区别: char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0__0xFF )多数情况下,char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个大整型数域时,便会看到它们在符号扩展上的差异。另一个区别表现在当把一个转载 2009-07-19 16:28:00 · 1475 阅读 · 0 评论 -
算法的概念与伪代码的使用
算法 Algorithm算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。 一个算法应该具有以下五个重要的特征: 有穷性: 一个算法必须保证执行有限步之后结束;确切性: 算法的每一步骤必须有确切的定义;输入:一个算法有0个原创 2009-04-09 18:46:00 · 4254 阅读 · 0 评论 -
[C++]实现委托模型
经过过程这个法度的运行成果,我们可以清楚的看到,哄骗模板重载这个概念,我们可以进级原有的函数,使之达到功能进级的境界~~你可以靠思惟上的隔音器隔断闹热热烈繁华声。我对.Net的委托模型印象很深切,应用委托,可以快速实现调查者模式,免除写很多错杂反复的代码。遗憾的是,C++并没有供给如许的模型,为了达到类似的目标,须要持续一个类并重写virtual办法,这种做法须要写很多代码,效力斗劲低下(应用转载 2013-07-12 11:58:19 · 1174 阅读 · 0 评论 -
算法的时间复杂度
<br />定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”。<br /><br />当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”。<br /><br />我们常用大O表示法表示时间复杂性,注意它是某一个算法的时间复杂性。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。<br /><br />此外转载 2011-01-11 16:25:00 · 910 阅读 · 0 评论 -
C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
很多同学到现在仍然对访问权限不是很清楚,或者比较模糊,有的同学记了又忘,忘了又记,所以今天想要借这篇文章给大家做一些总结,然后提供一个比较简便的方法去记C++中的访问权限。 众所周知,C++通过public,protected,private三个关键字来实现类成员(包括成员变量和成员方法)控制访问权限,下面为了便于大家记忆,我给访问权限的大小定义:public > protected...转载 2016-09-22 14:03:02 · 1615 阅读 · 0 评论 -
MFC 创建非模态对话框和销毁过程
今天项目中遇到的问题,记录下来,做个总结。一个简单的目的是创建一个非模态对话框并在对话框关闭后将其销毁。这里的销毁包括:销毁对话框对象资源和对话框对象指针;首先说创建对话框:一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁。创...转载 2018-08-01 21:58:50 · 7882 阅读 · 2 评论 -
C++ 使用VS2010创建MFC ActiveX工程项目
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动...转载 2018-03-02 23:22:59 · 493 阅读 · 0 评论 -
VS2005 解决"应用程序配置不正确,程序无法启动"问题(小问题,大思想)
最近使用VS2005+codejock开发,需要做一个Release版本。当我把必要的mfc库,拷贝到exe目录下时。exe还是不能启动。 经过网上查找,看到一篇文章。“解决"应用程序配置不正确,程序无法启动"”URL :http://www.cnblogs.com/wuhanhoutao/archive/2008/01/09/1031928.html于是乎。我按照文章所讲的,将dl和...转载 2013-01-28 18:05:04 · 901 阅读 · 0 评论 -
理解EnterCriticalSection 临界区
通俗解释就像上厕所:门锁了,就等着,等到别人出来了,进去锁上,然后该干什么干什么,干完了,把门打开门没锁,就进去,锁上,然后该干什么干什么,干完了,把门打开--------------------------------------------------多线程中用来确保同一时刻只有一个线程操作被保护的数据InitializeCriticalSection(&cs);//初...转载 2012-08-28 10:20:29 · 1808 阅读 · 0 评论 -
Win32程序设计(Windows程序设计机理)
Win32程序设计,又常常被叫做SDK/API编程,现在使用Win32的程序员确实已经很少了,主要是因为用win32写代码比用vc写起来还累,但是Win32编程常常又是非常有效率的,现在用的比较多的就是在编写游戏中.很多人在学习VC的时候总是抱怨vc太难了,有点老虎吃天的感觉,总是不知道如何下口,甚至有些人用了一两年都还没有入门,如果你有这样的感觉,不如先去读一下关于Win32 SDK的资料...原创 2011-07-28 16:42:34 · 1976 阅读 · 0 评论 -
lib和dll文件的区别和联系
lib和dlllib和dll文件的区别和联系.dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。.lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以...转载 2011-03-28 22:15:00 · 769 阅读 · 0 评论 -
查看端口命令及端口功能详解
在运行里-cmd-netstat -an就会显示出你开的端口了!!最近被病毒搞的头昏脑涨的,不过也收获不小哟,知道了点小方法,与大家共勉。 当前最为常见的木马通常是基于TCP/UDP协议进行client端与server端之间的通讯的,既然利用到这两个协议,就不可避免要在server端(就是被种了木马的机器了)打开监听端口来等待连接。例如鼎鼎大名的冰河使用的监听端口是7626,Back Or...转载 2010-10-10 00:22:00 · 1154 阅读 · 0 评论 -
VC调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWi...转载 2010-08-27 15:06:00 · 932 阅读 · 0 评论 -
VC自定义消息postmessage用法(消息响应函数)
VC 自定义消息 postmessage用法 1. 在 resource.h文件添加如下代码 定一个自己的消息 #define WM_MY_MESSAGE WM_USER + 100 //---------------------by tyds 2.在...view.h的文件添加如下: //{{AFX_MSG(CPostmessageView) afx_msg void Ont...转载 2010-07-16 17:58:00 · 2512 阅读 · 0 评论 -
Qt中文乱码解决思路
最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求。经常出现个问题是windows的解决了,源代码放到linux上编译不通过或者中文会乱码,本文主要是得出一个解决方案能解决Qt的中文问题,并支持不同平台与不同版本。下面我们通过下列场景中的问题来找寻答案:场景1:Qt版本: Q...转载 2019-06-16 11:59:41 · 223 阅读 · 0 评论 -
CWnd类与Windows窗口的关系-3、CWnd类如何封装Windows窗口
现在,可以比较深入地对CWnd类的封装机制进行剖析了。在建立窗口句柄映射方面,CWnd使用了一个未公开的类CHandleMap进行管理。使用CWnd及派生类创建窗口时,建立了句柄映射,在窗口销毁时删除映射。一个在MFC内部创建的CHandleMap对象管理所有CWnd实例与窗口句柄的映射,该对象通过一个内部使用的全局函数afxMapHWND()创建并取得。6.3.1 使用操作映射的函数...转载 2013-02-26 15:31:37 · 865 阅读 · 0 评论 -
QueryPerformanceFrequency 和 QueryPerformanceCounter用法
QueryPerformanceFrequency() - 基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。QueryPerformanceFrequency() - ...转载 2015-06-29 09:31:49 · 1743 阅读 · 0 评论 -
VC的MFC中重绘函数的使用总结(整理)
在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)--WM_NVPAINT系统会自己搞定--WM_PAINT消息对应的函数是OnPaint(),...转载 2013-02-18 10:51:10 · 965 阅读 · 0 评论 -
sleep(0)
来自本论坛: 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread...转载 2014-10-28 21:51:46 · 537 阅读 · 0 评论 -
多线程编程之三——线程间通讯
七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。 使用全局变量进行通信 由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使...转载 2014-10-08 18:16:16 · 685 阅读 · 0 评论 -
MFC多线程的创建,包括工作线程和用户界面线程
MFC多线程的创建1.MFC多线程简介MFC对多线程进行了一层简单的封装,在Visual C++中每个线程都是从CWinThread类继承而来的。每一个应用程序的执行都有一个主线程,这个主线程也是从CWinThread类继承而来的。可以利用CWinThread对象创建应用程序执行的其它线程。MFC用CWinThread对象来表示所有线程。利用MFC可以创建两种线程,分别称之为工作者线程...转载 2014-10-07 20:07:50 · 1445 阅读 · 0 评论 -
ofstream/ifstream 文本/二进制 方式 读入/写出 数据方法
文件 I/O 在C++中比烤蛋糕简单多了。 在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代< fstream.h>,所有的C++标准头文件都是无后缀的...转载 2014-09-08 23:57:04 · 2725 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别
临界区(Critical section)与互斥体(Mutex)的区别 1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。 2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。 3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。 临界区...转载 2013-03-12 17:59:53 · 5329 阅读 · 0 评论