037day(动态内存分配和内联函数,重载函数,函数参数缺省值的学习)

《2017年11月16日》【连续037天】

标题:动态内存分配和内联函数,重载函数,函数参数缺省值的学习;

内容:A.观看MOOC(三)1.3,1.4;

B.(a)动态内存分配:

P =new T;    T 是任意类型名,P是类型为T*的指针;

分配出大小为sizeof(T)字节的内存空间,并将该空间的起始地址赋值给P。

例:int *pn; pn=new int; *pn = 5;

P =new T[N];

动态分配出大小为sizeof(T)*N字节的内存空间,并将该内存空间的起始地址赋值给P。

例:int*pn;int i=5; pn =new int[i*20]; pn[0]=20; pn[100] =30;      //编译没问题,但运行时会数组越界,数组下标最大为99

用“new”动态分配的内存空间可用delete释放;

delete 指针;//该指针必须指向new的空间

例:int*p=new int; *p =5; delete p; delete p;   //异常,同一空间不能delete多次;

delete [ ] 指针;//不加[ ],数组的空间可能删除剩余,产生垃圾空间;

new的返回值是该类型名的指针;

(b).内联函数,函数重载,函数缺省参数:

为了避免函数调用的时间开销(当函数体小,但需要多次执行时),可用内联函数;

inline int Max(int a,int b)

{if(a>b) return a; return b;}

函数重载:

多个函数,名字相同,但参数个数或参数类型(即参数表)不相同,叫函数的重载;

int Max(double f1,double f2){   }

int Max(int n1,int n2){ }

int Max(int n1,int n2,int n3){ }

编译器会自行判断要执行哪个程序,但如果编译器根据参数找不到相应的函数,会报错,二义性;

函数的缺省参数:

void func( int x1,int x2 =2,int x3 =3){ }

func(10 );  //等效于 func(10,2,3)

func(10,8);    //等效于func(10,8,3)

func(10, ,8);     //错误,只能最右边的连续若干个参数缺省;

 

明日计划: 枚举例题的练习;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值