C/C++
文章平均质量分 79
wyq_tc25
这个作者很懒,什么都没留下…
展开
-
实现strcpy函数
以下转自:http://blog.csdn.net/gpengtao/article/details/7464061/大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plain copy char *my_strcpy(char *dst,const char *src) { assert(转载 2016-06-24 10:45:41 · 372 阅读 · 0 评论 -
深入理解C++的动态绑定和静态绑定
以下转自:http://blog.csdn.net/chgaowei/article/details/6427731为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定转载 2016-06-20 10:33:49 · 209 阅读 · 0 评论 -
memset用法详解
转自:http://www.cnblogs.com/lebronjames/archive/2010/07/04/1770987.html功 能 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。 void *memset(void *s,转载 2016-06-16 10:55:11 · 198 阅读 · 0 评论 -
C++中引用和指针的区别
下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别转载 2016-06-15 10:58:44 · 261 阅读 · 0 评论 -
C++的四种强制类型转换
以下转自:http://www.cnblogs.com/zhangsf/archive/2013/09/09/3309773.htmlC++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型转载 2016-06-20 11:07:04 · 175 阅读 · 0 评论 -
C++中的操作符重载
以下转自:http://www.cnblogs.com/BeyondAnyTime/archive/2012/09/01/2666570.html一、什么是操作符重载操作符重载可以分为两部分:“操作符”和“重载”。说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符。我们不妨先直转载 2016-06-20 11:22:03 · 208 阅读 · 0 评论 -
static作用(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2016-06-20 11:49:28 · 250 阅读 · 0 评论 -
const 指针与指向const的指针
当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。听起来有点混淆一会放个例子上来就明白了。 先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。 const int* p; (推荐) int const* p; 第一种可以理解为,p转载 2016-06-20 15:52:18 · 195 阅读 · 0 评论 -
c++内联函数(inline)及内联函数的使用及注意点
以下转自:http://www.jb51.net/article/48622.htm介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如复制代码 代码如下:#define TABLE_COMP(x) ((x)>0?(x):0)就定义了一个宏。为什么要使用宏呢?因为函数的转载 2016-06-20 16:26:06 · 7374 阅读 · 0 评论 -
“fatal error C1083 ”无法打开包括文件
步骤1:定位报“fatal error C1083: ”错误的文件,找到它所在的目录。步骤2:添加该项目的附加路径 。如图所示:1)右键查看该项目的属性2)点击配置属性——〉 C/C++ ——〉 常规 ——〉 附加包含目录——〉将报错文件所在目录添加进去3) 将项目的本地路径替换为工程相对路径工程根目录为:$(ProjectDir)其子目录inc为:$(ProjectDir原创 2016-06-22 20:38:26 · 9475 阅读 · 0 评论 -
转换到 COFF 期间失败
终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,转载 2016-06-22 21:03:29 · 340 阅读 · 0 评论 -
计算二叉树的深度+判断二叉树是否是平衡二叉树
计算二叉树的深度判断二叉树是否是平衡二叉树原创 2016-06-23 09:22:07 · 297 阅读 · 0 评论 -
C++以对象管理资源
以下转自:http://www.cnblogs.com/kane0526/p/3612428.html先看下面一段代码:class Node {};Node* CreateNode(){ }void Solve(){ Node *p=CreateNode(); //调用CreateNode函数 ... delete p;转载 2016-07-01 17:01:54 · 481 阅读 · 0 评论 -
bfptr算法
以下转自:http://noalgo.info/466.htmlBFPRT算法是解决从n个数中选择第k大或第k小的数这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法。一 基本思路关于选择第k小的数字有许多方法,其效率和复杂度各不一样,可以根据实际情况进行选转载 2016-07-01 15:33:13 · 4303 阅读 · 0 评论 -
基数排序
一. 算法描述基数排序(以整形为例),将整形10进制按每位拆分,然后从低位到高位依次比较各个位。主要分为两个过程:(1)分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则放入3号桶中)(2)收集,再将放置在0~9号桶中的数据按顺序放到数组中重复(1)(2)过程,从个位到最高位(比如32位无符号整形最大数4294967296,最高位10位)以【52转载 2016-06-24 12:21:59 · 219 阅读 · 0 评论 -
基数排序的性能优化
以下转自:http://blog.csdn.net/yutianzuijin/article/details/22876017最近需要对大小在0到100万内的很多数组进行排序,每一个数组的长度都不固定,短则几十,长则几千。为了最快完成排序,需要将数组大小和数据范围考虑进去。由于快速排序是常规排序中速度最快的,首选肯定是它。但是数组中数据的范围固定,可以考虑基数排序。为了使排序耗时尽转载 2016-06-24 13:17:48 · 589 阅读 · 0 评论 -
空类大小和虚函数的大小
1、为何空类的大小不是0呢?为了确保两个不同对象的地址不同,必须如此。类的实例化是在内存中分配一块地址,每个实例在内存中都有独一无二的二地址。同样,空类也会实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化后就有独一无二的地址了。所以,空类的sizeof为1,而不是0.2、请看下面的类:class A{ virtual void f(){} };class B:pub转载 2016-06-24 13:35:09 · 1438 阅读 · 0 评论 -
一维数组的初始化问题
以下转自:http://blog.csdn.net/caryaliu/article/details/8753269参考了:http://bbs.csdn.net/topics/310136813http://blog.csdn.net/sibylle/article/details/2026915个人新博客,欢迎关注:http://liumh.com一.转载 2016-06-24 16:48:01 · 508 阅读 · 0 评论 -
实现strcpy函数
实现strcpy函数#include "assert.h"#include "windows.h"char* my_strcpy(char *dst,const char*src){ assert(dst!=NULL); assert(src!=NULL); char *ret = dst; //while(*dst++=*src++);//要判断结尾 while((*d原创 2016-06-25 22:05:12 · 269 阅读 · 0 评论 -
c++中抽象类与接口的区别
其实对抽象类与接口的区别一直是搞不太清楚,最近正在学习《设计模式》,期间用到了很多c++多态的知识。这是才恍然发现,是应该整理下这方面的知识了。但在翻阅书本、上网查阅资料之际,发现有篇文章总结的不错。于是,转载(博主勿怪)并稍作修改如下:抽象类:抽象类是特殊的类,只是不能被实例化(将定义了一个或多个纯虚函数的类称为抽象类);除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普转载 2016-06-28 20:18:48 · 395 阅读 · 0 评论 -
抽象类 & 接口& 虚函数&纯虚函数&非虚函数
抽象类 & 接口一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。二、接口: 接口是引用类型的,类似于类,和抽象转载 2016-06-28 20:20:27 · 235 阅读 · 0 评论 -
按位反转无符号字符
以下转自:http://www.xuebuyuan.com/1709778.html题目:一个unsigned char,记为src,把其中的字节高位和低位全部互换 分析:想找出src中某一位的bit,肯定是要拿一个该位为1其他位为0的char,记为flag,和他进行&,取出该位的值,记为onebit。把该onbit左移(或者右移,看是否现在已经到了中间转载 2016-06-30 22:18:03 · 728 阅读 · 0 评论 -
C++用new和不用new创建类对象区别
起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题。当然这都是跟new的用法有关的。new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似转载 2016-06-30 23:21:37 · 348 阅读 · 0 评论 -
指针函数与函数指针、指针的指针与纸箱指针数组的指针
以下转自:http://www.cnblogs.com/gmh915/archive/2010/06/11/1756067.html一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符转载 2016-07-01 10:26:13 · 296 阅读 · 0 评论 -
指定文件中查找一个字符串并显示该字符串出现的次数
以下转自:http://bbs.csdn.net/topics/110120343#include "iostream"#include #include using namespace std;int CountSubString(string const& str, string const& substr){ int nCount = 0; string::si转载 2016-07-01 10:47:27 · 3896 阅读 · 0 评论 -
链接指示符extern “C”
链接指示符extern “C”extern“C”的使用方式如果程序员希望调用其他程序设计语言(尤其是C)写的函数,那么,调用函数时必须告诉编译器使用不同的要求。例如,当这样的函数被调用时,函数名或参数排列的顺序可能不同,无论是C++函数调用它,还是用其他语言写的函数调用它。程序员用链接指示符(linkage directive)告诉编译器,该函数是用其他的程序设计语言编写的,链接指示符转载 2016-06-23 21:50:56 · 662 阅读 · 0 评论