C/C++中 const,extern,static,volatile的使用
摘要:1.const的用法:为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替)用法1:常量取代了C中的宏定义,声明时必须进行初始化。const限制了常量的使用方式,并没有描述常量应该如何分配。如果编译器知道了某const的所有使用,它甚至可以不为该const分配空间。最简单的常见情况就是常量的值在编译时已知,而且不需要分配存储。―《C++ Program Language》用const声明的变量虽然增加了分配空间,但是可以保证类型安全。C标准中,co
阅读全文
posted @
2011-02-24 14:38
PhoenixZq
阅读(440)
推荐(0)
c++ 静态数据成员和静态成员函数
摘要:温故而知新,闲来无事,再次捧了本c++primer 看了看,写点c++静态成员变量和成员函数吧,以前一直在用,但是有没有完全搞懂什么时候该用static 成员变量,什么时候该用static function,什么时候不要用静态成员函数。 静态成员变量:primer中是这样说的,对于所有的对象共有一个成员变量的就用static ,提供一个所有对象共有的一个成员变量比“每一个类对象维护一个成员变量” 要更有效。 在这种情况下类的静态数据成员提供了一个更好的方案静态数据成员被当作该类类型的全局对象对于非静态数据成员,每个类对象都有自己的拷贝而静态数据成员对每个类类型只有一个拷贝静态数据成员,只有一份
阅读全文
posted @
2010-12-23 22:46
PhoenixZq
阅读(1480)
推荐(0)
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
摘要:学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()1、cin用法1:最基本,也是最常用的用法,输入一个数字:#include iostreamusing namespace std;main (){int a,b;cinab;couta+bendl;}输入:2[回车]3[回车]输出:5用法2:接受一个字符串,遇“空
阅读全文
posted @
2010-12-21 14:23
PhoenixZq
阅读(251)
推荐(0)
C++指针的奥秘
摘要:[代码]可以这么理解: *的优先级没有[]高, 第一种情况p与[]结合,代表p是一个数组, 什么样的数组呢? int*型的数组;第二种情况是p首先和*结合,p是一个指针, 指向int [4]类型的。用typedef实现二位数组的遍历[代码]intarray 随int[4]类型的,那么p1就是指向整型数组的指针,*p1就是整型数组, 退化成整数指针类型,p1就可以看成是指针的指针。 [代码]p是一个指向int的指针, 强制初始化为内存地址为100的指针, p+100是p向下偏移100个int存储空间(4)后的地址, 强制转化成整形后应该输出100+100*4=500.注意: 不能随意操纵p指向
阅读全文
posted @
2010-12-18 00:46
PhoenixZq
阅读(232)
推荐(1)
在Windows平台下使用安装GCC
摘要:我想将linux机 器上的一个程序拿到Windows下用。直接将souWindowsrce codes拷贝到Windows下无法用Windows的C编译器编译,大概是缺少一些库吧。后来,想到Linux下那些文件是用ccgcc编译的,因 此,觉得要是有Windows版本的或ccgcc编译器那就很值得一试了。 后来在网上搜了半天,似乎没有现成的Windows版本的cc或gcc编译器。不过,如果使用Cygwin, 它可以带有gcc编译器。Cygwin我一两年前用过的,但不是太常用。去了Cygwin网站仔细看了一下,发现Cygwin的确装有gcc。于是便下载 安装了Cygwin,又安装Cygwin环境
阅读全文
posted @
2010-12-08 01:30
PhoenixZq
阅读(7183)
推荐(0)
C++深拷贝与浅拷贝
摘要:浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值。但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件。。当 值拷贝的时候,两个对象就有用共同的资源,同时对资源可以访问,这样就会出问题。深拷贝就是用来解决这样的问题的,它把资源也赋值一次,使对象拥有不同的 资源,但资源的内容是一样的。对于堆资源来说,就是在开辟一片堆内存,把原来的内容拷贝。 如果你拷贝的对象中引用...
阅读全文
posted @
2010-12-04 01:45
PhoenixZq
阅读(271)
推荐(0)
构造一棵表达树
摘要:下面给出一种算法把后缀表达式转变成表达树。一次一个符号地读入表达式,如果符号是操作数,那么就建立一个单结点树并将它推入栈中;如果是操作符那么就从栈中弹出两棵树T1和T2并形成一棵新树,该树的根就是操作符,它的左、右儿子分别是T1和T2。然后将指向这课新树的指针压入栈中。#ifndef STACK_H#define STACK_Hstruct BiTreeNode{char data;BiTreeN...
阅读全文
posted @
2010-12-03 22:20
PhoenixZq
阅读(407)
推荐(0)
找硬币(分治法)
摘要:/*现有16枚外形相同的硬币,其中有一枚比真币的重量轻的假币,若采用分治法找出这枚假币,至少比较多少次才能够找出该假币*/#includeusing namespace std;//我们假设16枚硬币的编号为0~15 int num=0;int weight(int a[],int start,int end){ int sum=0; for(int i=start;i=end;i++) sum...
阅读全文
posted @
2010-11-18 01:57
PhoenixZq
阅读(718)
推荐(0)