【C/C++】
encoderlee
十年码龄,专注于Web爬虫、区块链、逆向工程、游戏脚本、自动化、后端开发。如需联系我,关注公众号【挨踢老李】获取联系方式
展开
-
C++中数组的引用
我们知道,引用就是给变量取一个别名。int a=10; int &ra=a;这样,ra就成了a的别名,对ra的操作就相当于对a的操作。那么可不可以引用数组呢?答案是肯定的。但是没有人会这么用,没有哪本书上会讲这么用。让我们来一一详解。比如:void main(){ int a[3]={1,2,3}; int (&ra)[3]=a; cout<<ra[1];}运行后输出了原创 2012-11-23 16:59:02 · 1993 阅读 · 0 评论 -
C语言中使用“可变长数组”需注意!
标准C99语言教程中说,C语言不可动态定义数组大小,但在被调用函数中,可以借助参数定义“可变长数组”。比如:void func(int x){ int num[x];}void main(){ func(10);}但把该代码放到VC6.0或VS2010中来编译均出错,提示为“应输入常量表达式”,意思是定义数组大小时,[ ]中应是常量。原创 2012-11-17 20:36:53 · 5120 阅读 · 1 评论 -
指向指针的指针,用途何在?
int n=20;int *pa=&n;这是一个指向整形变量的指针。pa是一个指针变量,它保存着整型变量n的地址。int **pb=&pa;这是一个指向“指向整形变量的指针”的指针,即指向指针的指针。pb保存着pa这个指针的地址。指针也是一个变量,它有自己的地址。可以用取地址符&取出它的地址。如果你理解上面这些话,以此类推你应该能理解int ***p;int ****p;是什么。不原创 2012-12-15 20:31:53 · 2327 阅读 · 0 评论 -
C++在堆中创建数组需注意
栈的空间是有限的,有时候,我们需要在堆中创建数组。比如:int *pa = new int[10];这样就在堆中创建了有10个元素的整型数组,然后把数组地址(即数组第一个元素的地址)赋给pa指针,当我们要访问数组元素的时候,可以:*pa=5;*(pa+1)=10;*(pa+2)=15;这样给数组第一个元素赋值为5,第二个元素赋值为10,第三个元素赋值为15。但是通常我们都不原创 2012-12-10 13:57:21 · 6610 阅读 · 0 评论 -
C++中数组作函数参数的问题
我们知道,给函数传递参数有三种方式,先温习一下。按值传参:void func(int x){ x=3;}void main(){ int a=0; func(a); cout<<a;}运行结果为输出0,可见按值传参的方式,func函数只是得到了3这个值,无论怎样对其修改,main函数中变量a的值都不会改变。按别名传参:void func(in原创 2012-11-23 16:54:57 · 3470 阅读 · 2 评论 -
虚析构函数与内存泄露
#include using namespace std;class father{public: father():a(50){;} ~father(){cout<<"父亲的析构函数"<<endl;} int a;};class son:public father{public: son():b(50){;} ~son(){cout<<"儿子的原创 2013-01-30 12:36:36 · 2456 阅读 · 1 评论 -
C++模板的实现本质类似于宏替换
最近看C++模板看得头疼,C++就是复杂啊。正因为强大,功能多,才会复杂。一个类模板的继承问题我搞了半天才明白。最后发现一点:C++模板的实现本质类似于宏替换!记住这点后,便豁然开朗,接下来看模板内容,有如神助。我们来看这段代码,我们定义个函数模板:template void Swap(Type &T1,Type &T2){ Type temp = T1; T1 = T2; T2原创 2013-03-11 15:49:24 · 5702 阅读 · 4 评论 -
为什么要用虚函数?什么时候用虚函数?
刚开始学C++学到“类”这一章的时候一直不明白虚函数用来做什么。看书上举的例子不太明白。#includeusing namespace std;class Father{public: void Show() { cout<<"父类Show函数"<<endl; }};class Son:public Father{public: void Show() {原创 2013-04-16 22:25:28 · 12804 阅读 · 7 评论 -
内存泄露,警惕构造函数中抛出的异常
C++提供了强大的异常处理机制,但有时候使用不当会引发一些问题,看如下代码。#include using namespace std;class A{public: A() { p = new int; throw -1; } ~A() { delete p; }private: int *p;};int main(){ while(true) {原创 2013-04-25 23:45:19 · 2499 阅读 · 0 评论