c/c++交流
文章平均质量分 65
炜X影
企图逆袭的屌丝一枚。
展开
-
【声明】
【声明】 早就想更新博客了,但是一直没有时间。找工作时发现有些公司对技术博客挺感兴趣的,就抽空整理一下以前的代码、读书笔记以及其他收藏的好东西,一个一个慢慢发上来吧! 注意: 1、大部分都是本人原创文章,如有转载成分,一般都会标明出处(除非忘了出处,知道的网友可以告诉我,我再补上)。 2、如果是转载的文章,我一般都会先自己看一遍,修改错漏然后加上自己的理解、注原创 2013-12-28 01:05:26 · 578 阅读 · 0 评论 -
cppTest-1.4:switch-case
/** *cppTest-1.4:switch-case * *本想试试c++的有没有Java的那么强大,发现还是跟c语言的差不多~ *author 炜sama */#includevoid main(){ typedef int type; type v;//经过测试发现v可以是int,char,bool等简单值,不能是float,double等复杂值 const type原创 2013-12-28 11:17:41 · 524 阅读 · 0 评论 -
cppTest-1.3:条件运算符
/** *cppTest-1.3:条件运算符 * *author 炜sama */#includeint main(){ //double d=0; //d=1/2*3.14; //printf("%e",d); int x=0,y=1,z=2; y=2.1; float f=4; double d=4; //x=x<0?++y:++z; x=x0?--x:100;原创 2013-12-28 11:17:04 · 514 阅读 · 0 评论 -
cppTest-1.2:变量函数声明的位置问题
/** *cppTest-1.2:变量函数声明的位置问题 * *author 炜sama */#includechar prime(unsigned int number);//如果把函数放在后面定义而不在调用这个函数前声明的话会引起编译错误!void main(){ int m; cout<<"The primers from 3-100 are:"<<endl; //cha原创 2013-12-28 11:15:45 · 605 阅读 · 0 评论 -
cppTest-1.3:反斜杠转义字符
/** *cppTest-1.3:反斜杠转义字符 * *author 炜sama */#includevoid main(){ cout<<'\''; cout<<'\"'; cout<<'\\'; cout<<'\0';//空字符 cout<<'\a';//响铃 cout<<'\b';//退格,将光标后退一格(并没有删掉前一格的字符),然后继续写。可以手动注释下面这行代码原创 2013-12-28 11:14:43 · 986 阅读 · 0 评论 -
cppTest-3.0:指针相关-2(二维数组&一级指针&二级指针&一维指针数组)
/** * cppTest-3.0:指针相关-2(二维数组&一级指针&二级指针&一维指针数组) * 总结: 1、设有数组Type[列数]、Type[行数][列数]: 数组变量类型:类型+数组长度表示,如一维数组:Type[列数]。二维数组:Type[行数][列数]。 指针基类型:指针低一维的变量类型。如一维数组指针低一维为元素,即Type。 二维数组指针低一维为行数组,类型为Type[原创 2013-12-28 11:23:57 · 1124 阅读 · 0 评论 -
cppTest-3.0:指针相关-1(指针与一维数组)
/** *cppTest-3.0:指针相关-1(指针与一维数组) * *author 炜sama*/#includeint whole[5];//全局变量一维数组的元素可以自动获得初值0!void main(){ cout<<"数组定义及初始化的问题-----------"<<endl; int a[5]={0,1,2,3,4};//Java的定义不能指定数组长度5! i原创 2013-12-28 11:22:00 · 603 阅读 · 0 评论 -
cppTest-3.5:模板函数
/** *cppTest-3.5:模板函数 * *author 炜sama */#include#include#includetemplate//说明Type是一个类型,在接下来的代码中将会使用这个类型//int i=0;//测试发现这里不能插入任何代码!!Type max(Type v1,Type v2)//使用上面定义的类型来定义函数{ return v1>v原创 2013-12-28 11:32:07 · 618 阅读 · 0 评论 -
cppTest-3.0:指针相关-x(指针运算)
/** *cppTest-3.0:指针相关-x(指针运算) * *转载+原创 *author 炜sama */#include#includevoid main(){char a[20]="You_are_a_girl";char*p=a;char**ptr=&p;//printf("p=%d\n",p);//printf("ptr=%d\n",ptr);//prin转载 2013-12-28 11:30:44 · 480 阅读 · 0 评论 -
cppTest-3.0:指针相关-1(指针与const)
/** *cppTest-3.0:指针相关-1(指针与const) * *总结:const修饰谁,谁就是常量,谁就不能修改。 * *author 炜sama*/#includevoid main(){ int x=2; int y=8; int * const p=&x; //p=&y;//指针p为常量 cout<<*p<<endl; const in原创 2013-12-28 11:21:29 · 527 阅读 · 0 评论 -
cppTest-3.0:指针相关-3(二维数组的n种new方式)
/** *cppTest-3.0:指针相关-3(二维数组的n种new方式) * *转载+原创 *author 炜sama */#includevoid main(){ typedef int A; const int m=2,n=2;//记住:定义数组时数组长度一定要用常量!!! //1、new二维数组方式 //缺点:n必须是已知 //优点:调用直观,连续储存,程序简洁转载 2013-12-28 11:26:53 · 622 阅读 · 0 评论 -
cppTest-6.2:对象成员
/** *cppTest-6.2:对象成员 * *类类型的成员即对象成员,这个例子展示了如何初始化对象成员和一般成员。 *author 炜sama */#include#include//这个在下面要用到的类要在调用之前定义!......//class string;//经过测试发现,这种类似于函数调用前先声明的方式对类不起作用!唯一起作用时刻就是当涉及到友元函数时。clas原创 2013-12-29 11:05:42 · 863 阅读 · 0 评论 -
cppTest-8.2:虚析构函数探究&父类和子类的构造函数与析构函数的调用顺序
/** *cppTest-8.2:虚析构函数 * *author 炜sama */#includeclass color{public: //@@如果这里的释放函数不是虚函数,那么对于delete p[0]、delete p[1]、delete p[2], //都只调用color的释放函数,因为p[i]是color类指针。 //这将导致实际为red和bright_red类对象编转载 2013-12-29 11:24:25 · 967 阅读 · 0 评论 -
cppTest-8.2:虚函数与多态性
/** *cppTest-8.2:虚函数 * *author 炜sama */#includeclass point{ float x,y;public: point(){}; point(float i,float j){ x=i; y=j; } float area(){ return 0.0; }//@@与虚基类不同,在定义时就指定了!};const float转载 2013-12-29 11:21:12 · 559 阅读 · 0 评论 -
cppTest-6.3:友元函数&友元类
/** * cppTest-6.3:友元函数&友元类 * * 友元总结: * 1、可以定义为友元的有类、类中的函数: * 友元类声明格式:在另一个类中:friend 类名。 * 单向友元函数声明格式:在另一个类中:friend 返回值类型 本类名::函数名(形参表)。不能在类中实现此函数代码!实现函数时要指明所属类名。 * 双向友元函数声明格式:在两个类中:friend原创 2013-12-29 11:07:03 · 943 阅读 · 0 评论 -
cppTest-6.2:复制构造函数测试
/** *cppTest-6.2:复制构造函数测试 * *author 炜sama */#include#includeclass string{private: char *str;public: string(char *s) { str=new char[strlen(s)+1]; strcpy(str,s); } //用对象初始化新对象时使用 //如原创 2013-12-29 11:03:46 · 745 阅读 · 0 评论 -
cppTest-8.1:三种派生方式和单基&多基派生
/** *cppTest-8.1:单基派生 * *author 炜sama */#include#includeclass person{ char *name; char sex; int age; protected: int nima;public: person(char *nm,char sx,int ag){ name=转载 2013-12-29 11:19:13 · 1034 阅读 · 0 评论 -
cppTest-3.0:指针相关-4(字符串函数)
/** *cppTest-3.0:指针相关-4(字符串函数) * *这只是简单测试一下c语言里的字符串函数 *author 炜sama */#include#includevoid main(){ char tmp[20]={"草泥马"},tmp2[20]={"勒戈壁"}; char *s1=tmp,*s2=tmp2; cout<<s1<<endl; cout<<s2<<e原创 2013-12-28 11:29:26 · 1237 阅读 · 0 评论 -
cppTest-1.2:变量能否当作常量用
/** *cppTest-1.2:变量能否当作常量用 * *想试试一个变量定义完后,可不可以在运用时暂时当作常量来用,结果发现不行!!! *author 炜sama */#includevoid main(){ int n=5; int is[5]; //int is2[const n];//错误的用法!n是变量,不能临时当作常量来使用! const int *p=&n;原创 2013-12-28 11:14:09 · 872 阅读 · 0 评论 -
cppTest-1.1:数据类型及其长度测试
/** *cppTest-1.1:数据类型及其长度测试 * *author 炜sama */#includevoid main(){ unsigned char uc='c'; unsigned long int uli=123; float f=1/3.0f; double d=1/3.0; long double ld=1/3.0; bool b="true";//可赋原创 2013-12-28 11:13:20 · 785 阅读 · 0 评论 -
cppTest-3.0:指针相关-3(指针与函数)
/** *cppTest-3.0:指针相关-3(指针与函数) * *author 炜sama */#includeint SumArray(int arr[],int n);void fun();void main(){ static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total1,total2; in原创 2013-12-28 11:28:03 · 566 阅读 · 0 评论 -
cppTest-2.2:静态变量
/** *cppTest-2.2:静态变量 * *author 炜sama*/#includevoid increment();int main(){ increment(); increment(); increment(); return 0;}void increment(){ static int i=1;//初始化是在编译时进行的,即静态变量只定义、初始原创 2013-12-28 11:19:54 · 529 阅读 · 0 评论 -
cppTest-7.1:运算符重载
/** *cppTest-7.1:运算符重载 * *author 炜sama */#includeclass complex{ float real; float imag;public: complex(float r=0,float i=0){ real=r; imag=i; } void show(){ cout<<real<<"+"<<imag<<"j"<<endl;转载 2013-12-29 11:10:03 · 642 阅读 · 0 评论 -
cppTest-4.7:枚举
/** *cppTest-4.7:枚举 * *author 炜sama */#includevoid main(){ enum enumTest{a,b,c,d,e};//默认a=0,其他以此类推 enum enumTest et; et=enumTest(0);//用枚举类型给枚举变量赋值 cout<<et<<endl; et=b;//直接用枚举类型里的元素给枚举变量原创 2013-12-29 10:55:59 · 556 阅读 · 0 评论 -
cppTest-3.6:引用
/** *cppTest-3.6:引用 * *引用虽然具有指针的一部分功能,但是限制还是很多的! *author 炜sama */#includeint ia[]={1,2,3,4,5};int &index(int i);void swap(int &n1,int &n2);//声明时形参与定义时一样,表明形参为引用类型的void main(){ int i=5; i原创 2013-12-29 10:48:30 · 532 阅读 · 0 评论 -
cppTest-7.6:重载new&delete
/** * cppTest-7.6:重载new&delete * *1、在类里面定义的重载new、delete只能对该类起作用 *2、new、delete都是类的静态成员,而且是自动成为静态成员,无需程序员手动声明。 * 所以不能访问类的非静态成员! *3、new和delete应该成对出现,即都重载或都全局。但是不这样做也不会出错。 *4、new在对象创建之前被调用,delete在原创 2013-12-29 11:17:38 · 836 阅读 · 0 评论 -
cppTest-7.5:重载下标运算符[]
/** *cppTest-7.5:重载下标运算符[] * *下标操作符“[]”是一个二元操作符,在基本类型中,将其作为数组的下标运算符而使用,自然,其第二个操作数必须是整数,如a[3]。 *在C++中,可以通过重载来改变这种用法。 *@@需要说明的是,对下标运算符重载定义只能使用成员函数,而不能采用友元函数。 *author 炜sama */#includeclass vec转载 2013-12-29 11:16:41 · 632 阅读 · 0 评论 -
cppTest-7.3:友元运算符函数
/** *cppTest-7.3:友元运算符函数 * *author 炜sama */#includeclass complex{ float real,imag;public: complex(float r=0,float i=0) { real=r; imag=i; } void show(){ cout<<"("<<real<<","<<imag<<")"<<endl;转载 2013-12-29 11:11:52 · 956 阅读 · 0 评论 -
cppTest-7.4:对象赋值与重载赋值运算符=
/** *cppTest-7.4:对象赋值与重载赋值运算符= * *需要说明的是,关于赋值运算符重载的函数定义并不是必须的。 *此外,在C++中,程序员不能定义新的运算符,被重载的运算符保持原有的优先级和结合性,而不论运算符重载函数内代码是什么样的形式。 *对于赋值操作,必须返回表达式的值,也即等式右边的值,只有这样,才能使连续赋值如c=b=a合法。程序中是通过返回由this指向的对象来转载 2013-12-29 11:14:17 · 777 阅读 · 0 评论 -
cppTest-6.6:this指针
/** *cppTest-6.6:this指针 * *this指针是隐含在对象成员函数内的一种指针。this也称为“指向本对象的指针”。 *与Java类似,不同之处在于引用成员时是this->*方式而不是this.*。 *author 炜sama */#includeclass ThisTest{private: int i;public: ThisTest(int i)原创 2013-12-29 11:08:46 · 574 阅读 · 0 评论 -
cppTest-6.0:类&对象&成员
/** *cppTest-6.0:类&对象&成员 * *这个例子基本涵盖了c++的类定义(成员变量和成员函数、构造函数、复制构造函数、析构函数等等)、 *对象初始化(有参、无参、new方式)等等。 *author 炜sama */#include#include//一般也把struct称为特殊的类。//在C++中,结构体类型也可以有成员函数,但它与类类型不同之处在于它的成员的原创 2013-12-29 11:01:39 · 757 阅读 · 0 评论 -
cppTest-6.0:类中特殊的成员的初始化
/** * cppTest-6.0:类中特殊的成员的初始化 * *有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括: *@@一般变量:可以在构造函数中或成员函数中初始化,也可以通过参数列表进行初始化。 *@@一般常量:必须通过参数列表进行初始化。 *@@引用变量:必须通过参数列表进行初始化。 *@@静态变量:只能在类外初原创 2013-12-29 11:02:28 · 826 阅读 · 0 评论 -
cppTest-0:基本程序结构
/**cppTest-0:基本程序结构 * * author 炜sama */#includeint main(){ int x=0,y=0,sum=0;//声明三个整型变量,其中,sum初始化为0 int $a=10;//教程都说这种方式命名不合法,但是经测试发现c++和Java这种命名都合法!!! cout<<"Enter 2 integers separated by原创 2013-12-28 11:12:26 · 575 阅读 · 0 评论 -
cppTest-2.1:内联函数与宏定义的比较
/** *cppTest-2.1:内联函数与宏定义的比较 * *1.内联函数在运行时可调试,而宏定义不可以; *2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; *3.内联函数可以访问类的成员变量,宏定义则不能; *4.在类中声明同时定义的成员函数,自动转化为内联函数。 * *author 炜sama*/#include#define原创 2013-12-28 11:19:10 · 823 阅读 · 0 评论 -
cppTest-2.3:预处理命令
/** *cppTest-2.3:预处理命令 * *author 炜sama*/#include#include//1、输入的3个数据类型必须一样!2、返回的数据类型与输入的数据类型是一样的!//宏名同样区分大小写#define NUM(a,b,c) a##b##c#define TESTvoid main(){ //int i[2]={1,2}; //cout<<s原创 2013-12-28 11:20:27 · 591 阅读 · 0 评论 -
c++库函数头文件
C++语言的核心部分很小,其外壳却十分丰富。这个外壳中提供丰富的库函数。程序员使用库函数无须再自行定义,只要注意以下三点便可: (1) 了解函数的功能 (2) 了解函数的原型 (3) 库函数按功能分为不同的库,每个库都有相应的头文件,给出了该库中各个函数的原型声明等有关信息。程序员使用库函数之前只需在程序中使用#include指令嵌入相应的头文件而不必再进行函数的原型原创 2013-12-30 14:49:54 · 1300 阅读 · 0 评论 -
c++程序实体的生存期和作用域
每个程序实体在程序执行中都有从创建到被撤消的一段时间,这段时间就称为该程序实体的生存期。在生存期内程序实体的标识符与它的存储区相关联。因此,程序实体的生存期由系统为其分配的内存方式所决定。C++为程序实体提供了四种内存分配方式:静态分配(编译器预分配)、栈分配(自动分配)、堆分配(动态分配)、只读分配。 (1) 静态分配系统可以为每个程序开辟一个固定的静态数据区。存于这区域中的程序实原创 2013-12-30 14:49:56 · 676 阅读 · 0 评论 -
cppTest-3.5:模板类
/** *cppTest-3.5:模板类@@在类模板中可以声明三种友元函数: (1)一般的友元函数。这种友元函数中不使用任何类模板中的类型参数表列中的参数。(即不使用类型模板的友元函数) (2)封闭型类模板友元函数。(使用类的类型模板的友元函数) (3)开放型类模板友元函数。(不使用类的类型模板而使用自己定义的类型模板的友元函数) *author 炜sama原创 2013-12-29 10:41:00 · 652 阅读 · 0 评论 -
cppTest-4.1:位域
/** * cppTest-4.1:位域 * *参考了百度百科的资料后,终于搞清楚了位域的问题!!! *这个例子涉及到了位域的基本特性、符号特性、对齐规则、大小计算、空域、无名位域等问题。 * *所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。 * 每个域有一个域名,允许在程序中按域名进行操作。 * 这样就可以把几个不同的对象用一个字节的二进制位域来原创 2013-12-29 21:59:19 · 674 阅读 · 0 评论 -
cppTest-4.0:结构体
/** *cppTest-4.0:结构体 * *c++比c的结构增强了,多了函数成员! *author 炜sama */#include#include#define TIMES 12800000struct time{ int hours; int minutes; int seconds;};//分号不能漏!!!void update(struct time *t)原创 2013-12-29 10:52:59 · 659 阅读 · 0 评论