c++(2)离港篇

1、引用类型(引用是变量的别名)

(1)基本数据类型的引用

#include<iostream>

using namespace std;

int main<void>

{

int a=3;

int &b=a;//引用必须初始化

b=10;//a的值也变了

cout<<a<<endl;

return 0;

}

(2)、结构体类型的引用

#include<iostream>

using namespace std

typedef struct

{

int x;

int y;

}Coor;

int main(void)

{

Coor c1;

Coor &c=c1;

c.x=10;

c.y=20;

cout<<c1.x<<c1.y;

return 0;

}

(3)、指针类型的引用

类型 *&指针引用名=指针;

#include<iostream>

using namespace std;

int main(void)

{

int a=10;

int *p=&a;

int *&q=p;

*q=20;

cout<<a<<endl;

return 0;

}

(4)、引用做函数参数

void fun(int &a,int &b)//a,b为别名

{

int c=0;

c=a;

a=b;

b=c;

}

int x=10,y=20;

fun(x,y);

2、控制变化的const

(1)、const与基本数据类型

int x=3;   //变量

变量名     存储地址        存储内容

    x                &x                     3

const  int x=3;   //常量,x的值无法更改

变量名     存储地址        存储内容

    x                &x                     3

(2)const与指针类型

const int *p=NULL;

int const *p=NULL;///与上一个两者完全等价

int *const p=NULL;

const int *const p=NULL;

int const   *const p=NULL;///与上一个两者完全等价

eg .int x=3;       const int *p=&x;//p=&y;正确//*p=4;错误

变量名     存储地址       存储内容/*指存储内容&指存储地址

  x                   &x                  3

 p                    &p                 &x

eg     .int x=3;   int *const p=&x;//p=&y;错误

(3)、const与引用

eg  int x=3;   const  int  &y=x;//x=10正确//y=20;错误

const int x=3;;   int *y=&x;错误

int x=3;  const int *y=&x;正确

3、函数新特性

(1)函数参数默认值

void fun(int i,int j=5,int k=10)

void fun (int i,int j=5,int k);//错误

有默认参数值的参数必须在参数表的最右端

void fun(int i,int j=5,int k=10);

void fun(int i,int j,int k)//定义时不用带参,因为可能会导致编译不通过

{

cout<<i<<j<<k;

}

int main()

{

fun(20);

fun(20,30);

fun(20,30,40);//无实参则用默认值,否则实参覆盖默认值;

return 0;

}

(2)函数重载

在相同作用域内用同一函数名定义的多个函数 参数个数和参数类型不同

int getmax(int x,int y,int z)//电脑编译后会生成getmax_int_int _int函数

{

}

double getmax(double x,double y)//电脑编译后会生成getmax_double_double

{

}

(3)内联函数 inline

编译时将函数体代码和实参代替函数调用函数,节省运行时间

但是内联函数是建议性的,由编译器决定

逻辑简单,调用频繁的函数建议使用内联。(不含循环)

递归函数无法使用内联方式

inline int max (int a,int b,int c)

int main()

{

m=max(i,j,k);

}

(4)内存管理:申请/归还内存资源

申请内存        new(运算符)eg     int*p=new 

释放内存       delete(运算符)eg   delete p

int *arr=new int[10];//申请块内存

delete [ ]arr;//释放块内存

注意事项:申请内存不一定成功,申请内存需要判断是否成功,释放内存需要设空指针

int *p=new int[1000];                 //     int *p=new int;

if(NULL==p)

{

//内存分配失败
}

delete [ ]p;                                 //delete p;

p=NULL;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值