- 博客(9)
- 资源 (1)
- 收藏
- 关注
转载 字符串算术表达式运算-逆波兰解法
/**转自百度百科代码*/思路:用到两个栈S1,S2,S1存放表达式逆波兰表示的结果,S2临时栈存放运算符。#include#include#include#include#include#include #define max 100usingnamespa
2014-03-15 21:28:50
853
原创 C++ _int64 不能直接进行移位运算
_int64 x = 1cout//x的输出为0,是因为64位整数不能直接作移位运算。//如下实现移位操作://64左移len 位U64 move_left64(U64 a, int len){ U32 *p = (U32*) &a; if (len <32) { *(p+1) <<= len; U32 tmp = (*p) >> (32-len); *(p+1) |=
2013-12-17 11:06:54
4925
2
转载 条款13:以对象管理资源
auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个
2013-11-18 21:31:24
690
原创 条款12:复制对象时勿忘每个成员
用户自定义构造函数,copying构造函数,assignment函数,应把每个成员做初始化,未做初始化,编译器不会给出警告。 派生类定义构造函数记得调用基类的相应构造函数,完成初始化。 coping函数和assignment函数之间勿相互调用。
2013-11-18 20:58:45
767
转载 c/c++中static关键字的作用
static在C里面可以用来修饰变量,也可以用来修饰函数。1.static局部变量a.生存周期:静态局部变量在函数内定义,生存期为整个源程序;b.存储方式:当用static修饰时,从原来的栈中存放改为静态存储区;c.作用域:与自动变量相同,只能在定义该变量的函数内使用,退出该函数后,尽管该变量还继续存在,但不能使用它;d.初始化:对基本类型的静态局部变量若在说明时未赋以初值,则
2013-09-26 10:02:22
631
原创 linux多线程-哲学家就餐问题
有可能出现死锁现象#include #include #include int chop[5];pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond_chop[5];void *philosopher(void *p) { const int a = (int)p; //con
2013-09-24 17:32:08
819
原创 unix进程间通信——使用管道通信
使用管道需要注意以下4种特殊情况(假设都是阻塞I/O操作,没有设置O_NONBLOCK标志):如果所有指向管道写端的文件描述符都关闭了(管道写端的引用计数等于0),而仍然有进程从管道的读端读数据,那么管道中剩余的数据都被读取后,再次read会返回0,就像读到文件末尾一样。如果有指向管道写端的文件描述符没关闭(管道写端的引用计数大于0),而持有管道写端的进程也没有向管道中写数
2013-09-22 16:30:22
540
原创 读字符串越界
写C程序的时候经常会用到读字符串。当为字符串数组开辟的空间不够大的时候,输入字符数大于数组大小会发生不可预知的运行时的错误,这种错包括1> 运行时错误,2>结果错误,3,>段错误。遗憾的是C语言本身没有提供检测这种的错误的机制。下面根据代码分析产生错误的类型以及原因。分析1#include int main(void){ int sum = 0, i = 0; cha
2013-09-07 15:25:26
901
原创 何时需要写拷贝构造函数,何时需要写析构函数
<br />一般,一个类需要写析构函数就需要写拷贝构造函数。当类中成员为内置类型或类类型,合成的拷贝构造函数及合成的析构函数都能解决问题啦。而当类成员中有数组,指针时,就需要我们手动写析构函数啦。因为合成的析构函数,在释放内存时,只会释放存储指针的内存,而不会释放该指针指向的内存,从而导致内存泄露。
2011-02-25 09:43:00
617
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人