C++
Gao__Xiong
这个作者很懒,什么都没留下…
展开
-
堆与栈的区别
在C++编译中,内存分为五个区: 1、栈区(stack)——— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ———般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)———全局变量和静态变量的存储是放在一块的,初转载 2015-12-11 19:11:03 · 466 阅读 · 0 评论 -
虚函数
1、定义 冠以关键字virtual的成员函数称为虚函数 2、语法结构 virtual 返回类型 函数名(参数) 例如:class B{public:...virtual void who(){/.../}}3、作用 基类可以用虚函数提供一个与派生类相同的界面,允许派生类定义自己的实现版本。虚函数调用的解释依赖于调用它的对象类型,使基类指针指向不同派生类的对象时自动完成thi原创 2016-03-23 22:21:43 · 499 阅读 · 0 评论 -
函数重载特性
一般函数的重载:函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。注:不将返回类型考虑到函数重载中。虚函数的重载:重载一个虚函数时,要求函数名、返回类型、参数个数、参数类型和顺序完全相同。否则会出现以下问题: 1)如果仅仅返回类型不同,其余相同,则C++认为是错误重载,因为只靠返回类型不同的信息进行函数匹配是含糊的。 2)如果函数原型不同,仅函数名原创 2016-03-25 13:29:43 · 1604 阅读 · 0 评论 -
设计随机库
接口设计原则: 用途一致:接口中所有函数都属于同一类问题 操作简单:函数调用方便,最大限度隐藏操作细节 功能充足:满足不同潜在用户的需要 性能稳定:经过严格测试,不存在程序缺陷在生成随机数过程中需要用到srand函数,以使每次重新运行程序生成的随机数没有相关性,实现绝对意义上的随机。srand((int)time(0))介绍 srand函数需要接收一个参数,返回值没有,前面的s是种子的意思原创 2016-04-19 21:07:44 · 652 阅读 · 0 评论 -
函数指针和函数对象的比较
一、函数指针 函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。 函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。 函数指针的声明方法: 数据类型标志符 (指针变量名) (形参列表); 一般函数的声明为: int func ( int x ); 而一个函数指针的声明方法为: int (*func原创 2016-07-25 16:06:41 · 603 阅读 · 0 评论 -
C++中break,continue,return用法
一。break 1. break语句形式: break; 2. break语句功能: A. 在switch语句中,break是其语法本省的一部分,break语句会终止其后语句的执行,退出switch语句。 B. 使一个循环立即结束,也就是说在循环中遇到break语句时,循环立即终止,程序转到当前循环体后的第一个语句去继续执行。 3. 注意原创 2016-07-20 16:35:09 · 11942 阅读 · 1 评论 -
while语句中i--与++i问题的讨论
起初,在看到while ((lo < hi--) && (e != _elem[hi]));此语句时,不解后面_elem[hi] 中的hi比前面lo#include<iostream>using namespace std;int main(){ int i = 4; while ((i--== 4)&&(i == 3)) { cout << i <<原创 2016-07-21 21:22:37 · 1587 阅读 · 0 评论 -
关于while里面条件变量的注意事项
//The author is Gao_Xiong//All rights reserved#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ int lo = 2, hi = 7; int e = 3; vector<int>V(8, 0);原创 2016-11-20 21:58:39 · 1385 阅读 · 0 评论 -
typedef与typename的用法
1、类型说明typedef类型说明的格式为:typedef 类型 定义名;类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定义整型变量。例如: SIGNED_INT i, j;(原创 2016-10-09 10:29:00 · 2538 阅读 · 0 评论 -
类与继承总结
一、类之间的关系 在面向对象技术中,类是数据和操作的集合,他们之间有三种主要关系:has-a,uses-a和is-a。 has-a表示类的包含关系,用于描述一个类由多个“部件类”构成。C++实现has-a的关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。 uses-a表示一个类部分地使用另一个类。在面向对象的技术中,这种关系通过类之间成员函数的相互关系,定义友元或对象参数传递来实现原创 2016-03-11 21:44:28 · 1047 阅读 · 0 评论 -
虚继承
1、虚继承的概念 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。 2、语法格式 class 派生类名:virtual 继承方式 基类名 virtual是关键字,声明该基类为派生类原创 2016-03-22 21:27:11 · 504 阅读 · 0 评论 -
new与delete的作用
new与delete是动态内存分配操作符。 new 后面跟一个数据类型,并跟一对可选的方括号[ ]里面为要求的元素数。它返回一个指向内存块开始位置的指针。其形式为: pointer = new type 或者 pointer = new type [elements] 第一个表达式用来给一个单元素的数据类型分配内存。第二个表达式用来给一个数组分配内存。 例如: 1、一维数组的动态分配:原创 2015-12-11 21:43:20 · 1364 阅读 · 0 评论 -
关键字const在指针中的运用
1、指向常量的指针:用const约束指针所指访问对象。 形式:const 类型 指针 或 类型 const 指针 如:const int *p 指向常量的指针变量可以获取变量或常量的地址,但限制用指针间址访问对象方式为“只读”。而且常量的地址只能赋给指向常量的指针。 如:#include <iostream>using namespa原创 2015-12-13 19:58:53 · 661 阅读 · 0 评论 -
输入带有空格字符串的三种方法
方法一:#include<iostream>#include<string>using namespace std;int main(){char ch[3];cin.getline( ch,3 );cout<<ch<<endl;system("pause");}结果: 方法二:#include<iostream>#include<string>using namespace原创 2015-12-28 20:37:50 · 5644 阅读 · 0 评论 -
以指针方式访问数组几种不同形式输出语句解析
以指针方式访问数组几种不同形式输出语句解析下面用一个实例来分析此问题,在如下代码中:#include<iostream>using namespace std;int main(){ int a[]={1,3,5,7,9},*p; for(p=a;p<a+5;) {cout<<"a["<<p-a<<"]="; cout<<*(p++)<<'\t'; co原创 2015-11-29 11:41:15 · 950 阅读 · 0 评论 -
关于用指针方式访问二维数组的问题
关于用指针方式访问二维数组的问题首先,以二维数组a[2][3]为例,a是由数组a[0]、a[1]组成的一维数组,因此,数组名a可以看作是a[0]、a[1]的首地址,即a==&a[0]。然后,对于二维数组,在这里引入两个概念:1、一级指针:带一个下标的数组名是一级指针,偏移量是一个元素的长度,它所指对象是数组元素。2、二级指针:不带下标的数组名是一个逻辑上的二级指针,所指对象是行向量,偏移量是一原创 2015-11-28 17:42:19 · 5032 阅读 · 1 评论 -
重载运算符
通常重载运算符用成员函数或友元函数,它们的关键区别在于:成员函数具有this指针,而友元函数没有this指针。 用成员函数重载运算符的语句格式为: 类型 类名::operator op(参数表) { //相对于该类定义的操作 } 一、一元与二元运算符 1.一元运算符 一元运算符不论前置还是后置,都要求有一个操作数: object op 或 op object原创 2015-12-23 13:30:58 · 588 阅读 · 0 评论 -
sscanf用法总结
参考博客地址:http://blog.chinaunix.net/uid-26284412-id-3189214.htmlsscanf(recvbuf,”%*[^/]/%[^ ]s”,buf_rev); sscanf(buf, “GET /%[^ ]”, buf_rev); 这个是在一个webserver.c里面的例子,通过sscanf()语句可以找到和它前面相匹配的语句然后打印出后面需要的转载 2016-03-10 21:12:17 · 712 阅读 · 0 评论 -
关于printf输出格式类型的总结
一、函数调用形式 printf函数调用的一般形式为: printf(“格式控制字符串”, 输出表列) 其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如: “%d”表示按十进制整型输出; “%ld”表示按十进制长整型输出; “%c”表示原创 2016-03-10 22:33:39 · 3894 阅读 · 0 评论 -
2017.9.9网易校招笔试最后一道编程解答
解答代码:#include<iostream>#include<string>#include<algorithm>#include<vector>using namespace std;//判断是否是合法括号匹配序列bool panding(string ss, int n) { int count = 0; for (int i = 0; i<n; i++) {原创 2017-09-09 17:23:01 · 1041 阅读 · 0 评论