文章分类 -  C++转载

1 2 3 4 5 ··· 9 下一页
网上搜索的C++转载文章
c++运算符重载总结
摘要:c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。 1.一般运算符重载 在进行对象之间的运算时,程序会调用与运算符 阅读全文
posted @ 2016-03-04 09:45 carekee 阅读(552) 评论(0) 推荐(0) 编辑
数组指针和指针数组的区别(转)
摘要:数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该... 阅读全文
posted @ 2015-07-03 09:13 carekee 阅读(473) 评论(0) 推荐(0) 编辑
自己动手写C语言浮点数转换字符串函数(转)
摘要:前几天,应一个小友要求,写了几个字符串转换函数帮助其进行语言学习,自觉其中的几个函数还比较满意,故发布在此,可供初学者参考。 浮点数转换字符串函数说简单也简单,说麻烦,也够烦心的,关键看你如何写了。简单点的几十行代码就行,复杂点的恐怕就的几百行代码了。如果还要考虑移植性、可读性甚至可维护性等就更麻烦的了。我一贯认为,一些事务性的项目应着重考虑移植性、可读性和可维护性等,而常用的带点系统性质的函数代码就应该以执行效率为主。 本文的浮点数转换字符串函数还是比较复杂的,基本可算得上较低层次的转换。由于我已经习惯了用BCB写C/C++代码,因此我写的浮点数转换字符串函数是80位扩展精度浮点数的,但.. 阅读全文
posted @ 2013-06-07 17:18 carekee 阅读(7457) 评论(0) 推荐(0) 编辑
自己动手写C语言格式化输出函数(转)
摘要:printf系列函数,包括fprintf、sprintf函数等,其功能是将C语言的所有基本数据类型按用户要求进行格式化输出。 printf函数几乎是所有学习C语言的人接触到的第一个函数,是C语言标准中使用频率最高的函数。 printf函数是C语言标准函数中最著名的可变参数函数,看见printf这个函数名,就想起了C语言的说法一点也不过分,因此,可以说是C语言标准函数中的最具标志性的函数。 printf系列函数。在DOS环境下,这一系列输出函数涵盖了PC机所能用到的所有输出设备,所以printf系列函数也是C语言中最复杂的函数。 当然,随着DOS时代的结束,不仅printf系列函数的作用... 阅读全文
posted @ 2013-06-07 17:14 carekee 阅读(4062) 评论(0) 推荐(0) 编辑
含有可变参数的函数(转)
摘要:处理含有可变参数的函数,只要解决如何访问可变参数列表即可。ANSI C和UNIX系统都定义了一些宏来访问函数中的可变参数表:va_list 是一个指向参数列表的指针的宏;va_start()、va_end()是两个访问可变参数列表的函数。va_start()用于把参数指针指向参数列表中的第一个可变参数。它在在UNIX和ANSI下是不同的:在UNIX下,只需要va_list作参数:void va_start( va_list arg_ptr );在ANSI下,除了va_list作参数外,还需要把第一个可选参数之前的参数也传进去:void va_start( va_list arg_ptr, pr 阅读全文
posted @ 2013-04-18 16:48 carekee 阅读(548) 评论(0) 推荐(1) 编辑
用VC++设计一个由日期判断对应是星期几的程序
摘要:C语言根据日期判断星期几(使用基姆拉尔森计算公式)算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。以公元元年为参考,公元元年1月1日为星期一</PRE><PRE>程序如下:#include "stdio.h"void CaculateWeekDay(int y,int m, 阅读全文
posted @ 2012-09-18 17:05 carekee 阅读(997) 评论(0) 推荐(0) 编辑
C++内存分配秘籍—new,malloc,GlobalAlloc详解
摘要:C++内存分配秘籍—new,malloc,GlobalAlloc详解 _______只为因内存分配而无法入眠的程序员 一。关于内存 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自... 阅读全文
posted @ 2012-08-01 13:52 carekee 阅读(645) 评论(0) 推荐(0) 编辑
C技巧:结构体参数转成不定参数(转)
摘要:下面这段程序是一个C语言的小技巧,其展示了如何把一个参数为结构体的函数转成一个可变参数的函数,其中用到了宏和内建宏“__VA_ARGS__”,下面这段程序可以在GCC下正常编译通过:1234567891011121314151617181920#include <stdio.h>#define func(...) myfunc((struct mystru){__VA_ARGS__})struct mystru { const char *name; int number; };void myfunc(struct mystru ms ){printf("%s: %d/n 阅读全文
posted @ 2012-02-15 14:04 carekee 阅读(250) 评论(0) 推荐(0) 编辑
C++ 虚函数表解析(转)
摘要:前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片 阅读全文
posted @ 2012-02-15 14:03 carekee 阅读(400) 评论(0) 推荐(0) 编辑
任意分布的随机数的产生方法—VC程序实现方法
摘要:下载源代码 摘要: 随机数在实际运用中非常之多,如游戏设计,信号处理,通常我们很容易得到平均分布的随机数。但如何根据平均分布的随机数进而产生其它分布的随机数呢?本文提出了一种基于几何直观面积的方法,以正态分布随机数的产生为例讨论了任意分布的随机数的产生方法。 正文:一、平均分布随机数的产生 大家都知道,随机数在各个方面都有很大的作用,在vc的环境下,为我们提供了库函数rand()来产生一个随机的整数。该随机数是平均在0~RAND_MAX之间平均分布的,RAND_MAX是一个常量,在VC6.0环境下是这样定义的:#define RAND_MAX 0x7fff 它是一个short 型数据的最大值, 阅读全文
posted @ 2011-12-27 14:39 carekee 阅读(1192) 评论(0) 推荐(0) 编辑
CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换
摘要:一.CString与LPCWSTR 两者的不同:LPCWSTR 是Unicode字符串指针,初始化时串有多大,申请空间就有多大,以后存贮若超过则出现无法预料的结果,这是它与CString的不同之处。而CString是一个串类,内存空间类会自动管理。 CString转换成LPCWSTR方法一:CString strFileName; LPCWSTR lpcwStr = strFileName.AllocSysString(); 方法二:CString str=_T("TestStr"); USES_CONVERSION; LPCWSTR lpcwStr = A2CW((LPC 阅读全文
posted @ 2011-12-01 14:23 carekee 阅读(2913) 评论(0) 推荐(0) 编辑
jepg图像的存储 转
摘要:先把代码贴上:extern "C"{#include "jpeglib.h"#pragma comment(lib,"libjpeg.lib")//把无压缩的图像数据(纹理)存储成jepgbool appSaveJpegRGB(char *filepath,unsigned char * data,int width,int height){unsigned char *Data = data;int nWidth = width;int nHeight = height;struct jpeg_compress_struct jcs 阅读全文
posted @ 2011-09-29 17:32 carekee 阅读(902) 评论(0) 推荐(0) 编辑
C++实现CString和string的互相转换(转)
摘要:CString->std::string 例子:CString strMfc=“test“;std::string strStl;strStl=strMfc.GetBuffer(0);unicode情形下: CStringW strw =_T("test"); CStringA stra(strw.GetBuffer(0)); strw.ReleaseBuffer(); std::string imgpath=stra.GetBuffer(0); stra.ReleaseBuffer();std::string->CString 例子:CString strMf 阅读全文
posted @ 2011-09-29 17:28 carekee 阅读(11085) 评论(0) 推荐(0) 编辑
VC屏幕截图代码 转
摘要:VC屏幕截图代码2008年05月20日 14:09HBITMAP CLinkDlg::CopyScreenToBitmap(LPRECT lpRect) { HDC hScrDC, hMemDC; HBITMAP hOldBitmap;int nX, nY, nX2, nY2; int nWidth, nHeight; int xScrn, yScrn; if (IsRectEmpty(lpRect)) return NULL; hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL); hMemDC = CreateCompat 阅读全文
posted @ 2011-09-29 17:27 carekee 阅读(805) 评论(0) 推荐(0) 编辑
LPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换 转
摘要:如何理解LPCTSTR类型? L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。P表示这是一个指针C表示是一个常量T表示在Win32环境中, 有一个_T宏这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。STR表示这个变量是一个字符串所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。同样, 阅读全文
posted @ 2011-09-29 17:26 carekee 阅读(1881) 评论(0) 推荐(0) 编辑
分治算法求数组中最大元素位置的算法
摘要:分治算法求数组中最大元素位置的算法:#include <iostream>int Max(int a[], int low, int high);void main(){int a[10], m;for(int i=0;i<10;i++)scanf("%d", &a[i]);m=Max(a, 0, 9);printf("%d\n", m);}/**********************************************************************************分治算法求数组中最大元素 阅读全文
posted @ 2011-06-30 15:48 carekee 阅读(1896) 评论(0) 推荐(0) 编辑
俄式乘法
摘要:俄式乘法,又被称为俄国农夫法,它是对两个正整数相乘的非主流算法。假设m和n是两个正整数,我们要计算它们的积。它的主要原理如下: 当n为偶数时:n * m=n/2 * 2m 当n为奇数时:n * m=(n-1)/2 * 2m + m 并以1*m=m作为结束条件。n*m步骤如下:n m------------------------------------------50 6525 130 13012 260 6 5203 1040 10401 2080------------------------------------------sum=130+1040+2080=3205————————— 阅读全文
posted @ 2011-06-30 15:48 carekee 阅读(3110) 评论(0) 推荐(0) 编辑
修改折半查找算法进行范围查找
摘要:/****************************************修改折半查找算法进行范围查找***************************************/#include <iostream>void ZheBan(int min, int max, int r[], int low, int high);void main(){int r[5], min, max;printf("请输入数组元素:");for(int i=0; i<5; i++)scanf("%d", &r[i]);prin 阅读全文
posted @ 2011-06-30 15:47 carekee 阅读(1533) 评论(0) 推荐(0) 编辑
归并排序的思考
摘要:#include <iostream>void Merge(int r[], int r1[], int s, int m, int t); //函数声明void MergeSort(int r[], int r1[], int s, int t);void main(){int a[6], a1[6];int i;for(i=0; i<6; i++)scanf("%d", &a[i]);MergeSort(a, a1, 0, 5);for(i=0; i<6; i++)printf("%d ", a[i]);printf( 阅读全文
posted @ 2011-06-30 15:45 carekee 阅读(467) 评论(0) 推荐(0) 编辑
vc 下断点调试就出错:afxtempl.h Line:254
摘要:程序中用到了CArray数组,一开始调试时一切正常,但下午调试时,只要进入断点,就弹出错误,提示“afxtempl.h Line:254”出错。网上查证,找到了错误原因(与上面博客相同) 1、数组访问越界:可能是程序中确实存在这个问题2、可能是在Watch框内想要查看一个越界的数组元素如果是后者则会出现运行正常,但是调试的时候会出错解决办法:1 单步跟踪查找到越界数组2 删除所有Watch项删除掉Watch中的CArray变量,恢复正常。 阅读全文
posted @ 2011-03-07 15:43 carekee 阅读(813) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 9 下一页