
C/C++
SDMrFeng
Time will tell.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树遍历,深度优先遍历,广度优先遍历,前序中序后续优先遍历,层次遍历
首先明白两个概念:1. 深度遍历包括前中后序遍历三种;2. 广度优先遍历就是层次遍历。PS:前中后序遍历,如果使用递归遍历,都很简单易理解;如果使用非递归方式,首先想到的就应该是使用栈结构来控制整个过程,因为递归也是利用栈来实现的;前中后序遍历的非递归方式中,后序遍历的非递归方式相比较而言,略复杂。原创 2014-10-02 11:07:59 · 3389 阅读 · 0 评论 -
error LNK2019: unresolved external symbol "public: __thiscall
出现error LNK2019: unresolved external symbol "public: __thiscall 这种错误,最常见的两种原因1. 被调用函数没有实现,如只在头文件.h中做了声明,没在源文件.cpp中做对应的实现(即使是方法体为空,也要做对应的实现)2. 被调用函数所在的lib文件没有导入或没被设置为依赖项解决方法就是:1. 做函数声明的对应实现;原创 2013-12-20 00:56:47 · 8532 阅读 · 0 评论 -
C++多线程中用临界区控制全局变量的访问冲突问题
使用C++有段时间了,但是一直忙于项目,没有关注过多线程相关知识,前几天帮同学处理一个多线程的bug时花费了很多时间,终下定决心最近搞定这个问题。关于临界区使用在前面一篇文章《C++多线程编程简单实例》中略有提及,此篇转摘的文章更为详细一些。Original URL: http://beyondjhf-2008.iteye.com/blog/679141困扰了我很长时间的多线程转载 2013-12-20 00:48:43 · 7606 阅读 · 1 评论 -
关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
使用C++做项目有几个月了,各种知识都略有接触,今看到这篇,感觉不错,随转Original URL: http://blog.youkuaiyun.com/jiyucn/article/details/821458摘自《高质量C/C++编程指南》Page 41-42...程序一般分为Debug 版本和Release 版本,Debug 版本用于内部调试,Release 版本发行给用户使用转载 2013-12-20 00:20:36 · 1047 阅读 · 0 评论 -
简单信息的加密实现
在互联网传输数据,安全性是一个非常重要的保证。。如何加密也成为了一个研究热点。。在C语言中,我们可以通过各种算法实现加密,以下是一个简单的加密和解密算法:加密时,将字符低四位取反,解密时,将低四位再次取反,代码如下: #include #define LEN 100 main() { char str[LEN]; int i; float x; printf("p转载 2013-12-20 01:08:45 · 1016 阅读 · 0 评论 -
MFC多线程CWinThread实例
实例嘛,就不多做太多说明了。这里不说worker线程的使用,那种挂回调的东西,不说了。而且几乎不可控的。这里只说派生CWinThread方式。这里基于对话框工程给出实例。1、派生CWinThread,不要自己写代码了,直接,类视图--右键add class -- mfc class -- base class设置为CWinThread。2、添加消息处理,得到的完整的类代码如下:转载 2013-12-19 23:00:24 · 3536 阅读 · 0 评论 -
c/c++ 数字转成字符串, 字符串转成数字
数字转字符串:用C++的streanstream:#include #Include string num2str(double i){ stringstream ss; ssi; return ss.str();}字符串转数字:int str2num(string s) {转载 2013-12-19 00:32:22 · 1158 阅读 · 0 评论 -
C++中定义类的三种方式
在java 中我们知道定义一个类用class 关键字就足够了,但是在c++ 中不一样,c++ 中定义一个类可以使用三种不同的方式:class 、struct (结构)和union (联合)。为什么定义一个类需要用三种不同的方式?这样会不会造成概念上的混淆?答案确是如此,但是如果我们能对此三者的概念清晰地了解,这种担忧也许能化解了无。c++ 语言在设计时实际上考虑是对c 语言的升级,它并没有转载 2013-12-19 00:26:33 · 5095 阅读 · 0 评论 -
Printf() 输出格式控制
[学习笔记--Printf()输出格式控制]hzh-fa 发表于 2006-8-12 12:26:00Original URL: http://bbs.youkuaiyun.com/topics/3301077151.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d转载 2013-12-19 00:34:09 · 950 阅读 · 0 评论 -
C++ wstring string char* wchar_t相互转换
1. char*->string(1)直接转换const char* nodename;string temp = nodename;string temp2(nodename);2. wchar_t*->wstring(1)直接转换const wchar_t* nodename;wstring temp = nodename;wstring tem转载 2013-12-19 00:29:29 · 17893 阅读 · 0 评论 -
指针和引用操作符的区别
Original URL:http://blog.youkuaiyun.com/acosoft/article/details/4447196指针和引用是相似的概念,但并不是相同的。它们都是指向一个对象,但是指针可以允许这个指向随时变化,并且它允许你指向一个空对象。引用可不一样,引用在初始时就必须指向一个对象,并且这个指向永远不能变化,也就是说永远只能指向这个对象,不能改变。可以这么理解,指针是一个变转载 2013-12-19 00:23:21 · 826 阅读 · 0 评论 -
C++多线程编程简单实例
今天我给大家讲一讲C++中的多线程编程技术,C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面我就此简单的讲一下: 创建线程的函数 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD转载 2013-12-19 22:29:41 · 1056 阅读 · 0 评论 -
C++指针与函数—指针作为参数和返回值
文章摘自“微学苑”,微学苑主讲C、C++和ShellOriginal URL: http://see.xidian.edu.cn/cpp/biancheng/view/50.html指针在函数中的使用也是十分广泛的。某些情况下,将指针作为函数的参数或函数的返回值会给我们带来方便。而某些情况下,我们又不得不将指针作为函数的参数或函数的返回值。指针作为参数我们在上一章我们已转载 2013-12-20 00:36:04 · 2294 阅读 · 0 评论 -
为什么VC经常输出烫烫烫烫烫烫烫烫(内存在不同状态下默认填充的字符)
在Debug 模式下,VC 会把未初始化的栈内存全部填成0xcc,当字符串看就是 烫烫烫烫……会把未初始化的堆内存全部填成0xcd,当字符串看就是 屯屯屯屯……可以让我们方便地看出那些内存没初始化但是Release 模式下不会有这种附加动作,原来那块内存里是什么就是什么名字 描述0xCD Clean Memory 申请的内存由malloc或者ne转载 2013-12-26 22:15:10 · 2858 阅读 · 0 评论 -
C++如何去除浮点数字符串后面的零
有时我们需要将浮点数转化为字符,然后打印输出。 double num = 32.0100; 常见输出: 32.0100但是,有时我们会有这样的需求:舍弃字符串最后多余的零,得到32.01。 我最近就遇到了这种需求,各处求解,最后通过网上案例的启发,想到了两种解决方案原创 2014-06-11 21:23:19 · 23435 阅读 · 7 评论 -
关于C的预编译 宏定义 的一些使用
头文件 防止重复包含================根据#define 和条件编译 #ifdef、#ifndef #else #endif 最经常的使用是 头文件 防止重复包含。但是 使用#pragma once更好,现在 gcc cl.exe 都支持,它不但代码更少,而且不用为宏起名字,更好。 #pragma 说明编译器信息//用法复杂,参考h转载 2014-05-26 12:59:41 · 3276 阅读 · 0 评论 -
C、C++判断操作系统是Linux、windows还是Unix
有些程序,最终使用的操作系统不确定,转载 2014-05-26 09:22:06 · 33420 阅读 · 1 评论 -
C++中数字与字符串之间的转换
1、字符串数字之间的转换(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->string char *p = "OK"; string str(p);(3)char * -->CString char *p ="OK"; CSt转载 2014-05-26 15:41:07 · 986 阅读 · 0 评论 -
VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall
error LNK2019: 无法解析的外部符号 "public: void __thiscall这种常见错误产生的几种原因解析原创 2014-03-26 10:14:38 · 20801 阅读 · 5 评论 -
一个简单的EBNF范式的实现
最近无事在看书的时候发现了这个东西刹那间突然觉得大学时候编译原理书上的的什么语法分析书、上下文无关等晦涩难懂的概念清晰了许多今天把它贴出来希望也能让你回想起些往事。。。至于EBNF范式是什么东西,网上有详细的介绍,在此就不作赘述。在这里,使用EBNF范式来实现一个简单算术运算的语法描述,然后用C语言实现。该算术运算要实现的功能:(1)能够进行加法、乘法运算,转载 2014-01-20 12:40:33 · 2826 阅读 · 0 评论 -
位运算符介绍(一):C/C++位运算符
位运算是指按二进制进行的运算。在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。 c++和c的位操作运算符完全相同,但c++中增加了bitset标准库来支转载 2014-01-15 09:22:27 · 992 阅读 · 0 评论 -
C++ 虚析构函数 纯虚析构函数 虚构造函数
众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢?class CBase{ public: CBase() { printf("CBase()\n"); } virtual ~CBase() =转载 2014-01-15 09:52:58 · 886 阅读 · 0 评论 -
C++获取系统时间的方式
//方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #include #include int main( void ) { time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) ); puts( tmp )转载 2013-12-26 21:59:01 · 1083 阅读 · 0 评论 -
6个变态的C语言Hello World程序
今天发现竟然hello world原来还可以这么玩,额,我真弱爆了From 酷壳-CoolShell.cn(很不错的技术网站): http://coolshell.cn/articles/914.html/comment-page-1#comments下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码下面的所有程序都可以在GC转载 2013-12-26 22:36:35 · 1071 阅读 · 0 评论 -
指针,揭开你的盖头来
Original URL: http://blog.youkuaiyun.com/acosoft/article/details/4512628指针,揭开你的盖头来指针是C/C++语言的灵魂设计,我一直这么认为,没有哪一种语言在指针功能的设计上能有C/C++这么灵活强大,甚至大多数语言根本就是避而不敢提指针。指针在应用上确实难以操作,但是它强大的功能支持和良好的运行性能犹如甘美的琼浆吸引着多少程序员为转载 2013-12-19 00:11:36 · 955 阅读 · 0 评论 -
从JAVA向C++转变并不那么简单
有人说C++和JAVA很像,我并不这么认为。C++更像C一点而不是像JAVA,因为C++本质上是C的扩展,C的延续,C的升级,即便它吸取了面向对象的思想,但大多数还是沿用了C的思想,它的语法基本和C相同,语言风格和处理机制也大多与C相同。在很多时候,C和C++可以出现在一个程序里,他们可以共用一个编译器,甚至它们还可以相互调用对方的函数库。很多时候他们没有太多的区别。大多数人将C++和JAVA相提转载 2013-12-18 21:41:56 · 5053 阅读 · 0 评论 -
浅谈C++容器
Original URL: blog.youkuaiyun.com/acosoft在面向对象的语言中,大多引入了容器的概念。那么 什么 是 容器?实质上就是一组相同类型对象的集合,但是它又不仅仅像数组那样简单,它实现了比数组更复杂的数据结构,当然也实现了比数组更强大的功能。C++ 标准模板库里提供了10 种通用的容器类,它基本上可以解决程序中遇到的大多数问题。 现在我主要来说明这10 种通用容器的转载 2013-12-18 23:05:45 · 1655 阅读 · 0 评论 -
C/C++面试题:C++与C有什么不同?
C/C++面试题:C++与C有什么不同?考点:C和C++的联系与区别出现频率:★★★★解析:C是一个结构化语言,它的重点在于算法和数据结构。对语言本身而言,C是C++的子集。C程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理得到输出。对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出或实现过程控制。转载 2013-11-03 20:17:58 · 2017 阅读 · 0 评论 -
C++继承中的虚析构函数
看看下面程序有什么错误:#include using namespace std;class Father{public: Father(){}; ~Father(){};};class Son:public Father{public: Son(){}; ~Son(){};};int main()转载 2013-11-03 21:00:32 · 1323 阅读 · 0 评论 -
C++面试题:看代码找错—vector容器的使用
C++面试题:看代码找错—vector容器的使用考点:理解vector容器的使用出现频率:★★★★ typedef vector IntArray; IntArray array; array.push_back( 1 ); array.push_back( 2 ); array.push_back(转载 2013-11-03 20:28:54 · 2678 阅读 · 2 评论 -
C++面试题:举例说明set的用法
++面试题:举例说明set的用法。考点:理解关联容器set的使用出现频率:★★★解析:我们这里演示set中元素的插入,删除以及遍历操作。程序示例如下: #include #include #include using namespace std; int main()转载 2013-11-03 20:15:56 · 1028 阅读 · 0 评论 -
C++面试题:list和vector有什么区别?
C++面试题:list和vector有什么区别?考点:理解list和vector的区别出现频率:★★★★解析:vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取(即使用[]操作符访问其中的元素),但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝(复杂度是O(n)),另外,当该数组后的内存空间不够时,需要重新申请一块转载 2013-11-03 20:12:38 · 1026 阅读 · 0 评论 -
常见C/C++ XML解析器比较
常见C/C++ XML解析器有tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的。如果你是第一次接触到XML解析,那么关于XML解析器的选择问题的确令人头疼,我们先看一下这些解析器有哪些特点。一、Xerces XML解析器官方网址:http://xerces.apache.org/x转载 2013-11-03 21:33:14 · 1292 阅读 · 0 评论 -
c++中的list用法
标准C++里的几个容器的用法应熟练掌握,如list、set、vector、map等,对于平时应用、面试都很有用,可以参考http://www.cplusplus.com/reference/。下面拿list用法举例:#include #include #include #include using namespace std;//创建一个list容器的实例LISTI原创 2013-11-03 21:15:38 · 978 阅读 · 0 评论 -
C++继承类中析构函数的问题
解析函数要 virtual #include using namespace std;class CBase {public: CBase(int i){ m_data = i;cout << "Constructor of CBase. m_data=" << m_data <<endl; } virtual ~CBase(){ cout << "Destructor原创 2013-11-03 20:43:51 · 4050 阅读 · 0 评论 -
C++面试题:把文件中的一组整数排序后输出到另一个文件中。
C++面试题:把文件中的一组整数排序后输出到另一个文件中。考点:运用vector容器解决实际问题出现频率:★★★★解析:这个题目牵涉到文件操作以及排序。我们可以使用vector容器来简化文件操作。在读文件的时候用push_back把所有的整数放入一个vector对象中,在写文件时用[]操作符直接把vector对象输出到文件。代码如下: #include转载 2013-11-03 20:35:44 · 5042 阅读 · 0 评论 -
C/C++面试题:i++与++i哪个效率更高?
C/C++面试题:i++与++i哪个效率更高?考点:i++和++i的效率比较出现频率:★★★解析:在这里声明,简单的比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用,而是仅仅简单的用于增加一员操作数,答案是明确的,前缀法和后缀法没有任何区别,编译器的处理都应该是相同的,很难想象得出有转载 2013-11-03 20:09:24 · 1256 阅读 · 0 评论 -
C++中Xerces解析xml文档
Xerces-C++的前身是IBM的XML4C 项目。XML4C和XML4J是两个并列的项目,而XML4J是Xerces-J——Java 实现——的前身。IBM将这两个项目的源代码让与Apache软件基金会(Apache Software Foundation),他们将其分别改名为Xerces-C++和Xerces-J。这两个项目是Apache XML组的核心项目(如果看到的是“Xerce原创 2013-11-03 21:25:45 · 2919 阅读 · 0 评论 -
初始化类中的静态数组
来个简单的小例子哇!class A{ public: static int arr[3];};int A::arr[3]={1,2,3};int main(){ A a; cout<<a.arr[1]<<endl; system("pause"); return 0;}更多更详细的内容看我下篇的内容,网上整理的。原创 2013-11-03 21:41:11 · 4371 阅读 · 0 评论 -
C++ static、const和static const类型成员变量声明以及初始化
C++ static、const和static const 以及它们的初始化const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过原创 2013-11-03 22:07:36 · 42850 阅读 · 9 评论