malloc,free和new,delete的区别(来自百度知道)

摘要: 1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2, 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。4,C++程序经常 阅读全文
posted @ 2013-05-13 15:00 ChanSea 阅读(278) 评论(0) 推荐(0) 编辑

C++ typedef用法小结 (※不能不看※)(此文为转载~)

摘要: 第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,// 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。用途二:用在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时 阅读全文
posted @ 2013-05-13 14:42 ChanSea 阅读(173) 评论(0) 推荐(0) 编辑

函数的形参(非引用非指针形参、指针形参、引用形参)

摘要: 一、非引用形参void add1(int v1){v1+=1;}这是最普通的形参方式,当函数被调用时,实参的副本初始化形参,函数并没有访问调用所传递的实参,因此v1+=1不会修改实参的值。对v1的操作只是修改了实参的一个副本。二、指针形参void add2(int *p){*p+=1;p+=1;}使用指针做为函数的形参,同样指针的值(指针的地址)不会因为p+=1而受到影响,但是指针指向的地址的值(*p)将会改变。所以要想修改实参的值,可以使用这种方法。但是还有一种更安全更自然的方法-引用形参三、引用形参void swap(int &a,int &b){int temp=a;a= 阅读全文
posted @ 2012-08-30 15:11 ChanSea 阅读(267) 评论(0) 推荐(0) 编辑

typedef 小谈(续)关于函数作为形参的使用。

摘要: #include <iostream>using namespace std;typedef int (*PFUN)(int d, int e);//声明PFUN为指向函数的指针类型。int add(int a, int b){ return (a+b);}int cf(int a, int b){ return (a*b);}void fun(int a, int b, PFUN pfun)//函数指针作为函数的参数{ cout << pfun(a,b) <<endl;}int main() { int a=5; int b=6; PFUN pfun=ad 阅读全文
posted @ 2012-06-05 13:47 ChanSea 阅读(244) 评论(0) 推荐(0) 编辑

const typedef define 小谈

摘要: const:const修饰普通变量名,就是把变量声明为常量。并没有太多复杂的内容。(因为被const声明为常量之后就不可以更改,所以也有人直接说const锁定变量。这是在网上别的地方看到的。)define:一开始是因为被typedef弄混淆了,所以被弄混了。define就是一个替代的作用。#define INT intINT a;//其实这里是等同int a;在程序被编译器编译之前,于处理器,会用int去替换INT,仅仅是做简单的字符串替换罢了。typedef:这里才是今天要讲的重点,首先提一个问题,最后在解释:问题:#define fp int*typedef int* FP;const f 阅读全文
posted @ 2012-06-05 13:39 ChanSea 阅读(178) 评论(0) 推荐(1) 编辑