离港篇

1 指针vs引用   找地址vs我就是你

2 define vs const

3 函数默认值与函数重载

4 内存管理:重中之重。

 

1 引用类型:

xx 变量名

萝卜头:变量的别名(即引用)

能不能只有别名?不行。

 

基本数据类型引用

Int a=3;

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

b=10;//对萝卜头操作就是对罗xx操作。

Cout <<a<<endl;

结果:10

 

结构体类型的引用:

Typedef struct {

Int x;

Int y;

}coor;

Int main()

{

Coor c1;

c1.x=0;c2.y=0;

Coor &c2=c1;

C2.x=10;

C2.y=20;

Cout <<c2.x<<c2.y<<endl;

Return 0;

}

 

指针类型的引用:

Int main()

{

Int a=10; //

Int *p; //指针定义

P=&a; //指针赋值

Int *&q=p; //指针的引用

*q=20; //引用赋值,即q指针就是p指针

Cout <<a<<endl;

}

 

引用作为函数参数:

表现的最淋漓尽致:

Void f(int * a,int * b)

{

Int *c;

*c=*a;

*a=*b;

*c=*b;                //指针,用底层,找地址来

}

Void main()

{

Int x=10; int y=10;

f(&x,&y);

}

------------------------------------------------------------------------------------------

Void f(int &a, int &b)

{

Int c;

c=a;

a=b;

b=c;                  //引用,我就是你,直接来

}

Void mian()

{

Int x=10; int y=20;

f(x,y);

}

 

 

2

 const与基本数据类型:

(1)const:

Int  x = 3;//变量

变量名         存储地址        存储内容

X               &x             3

(2)const

 Const int x = 3;//常量

 

     const与指针类型:

(1)const int * p = NULL;

(2)Int const * p = NULL;(   (1)  (2)  完全等价  )

 

Const int * p = &x;

Const 修饰 *p  ,所以不能  *p = 4;但是可以p=&y;

Int * const p = &x;

Const 修饰p  ,所以不能 p=&y;

Const int * const p = &x;

Const 修饰 p,也修饰 *p,因此不能*p=4,也不能p=&y;

 

  Const 与引用:

 

Const #define:

#define 是宏定义:不用申明类型,也不会被检查错误。

const在函数内部,需要函数类型,也会检查是否有错

 

3 函数特性

 

定义之前要声明:定义写默认值,错。

声明写默认,定义不写,对。

 

函数参数默认值:

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

Void fun(int i,int j=5,int k)    j如果有初值,k必须有

无实参用默认值,否则覆盖

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

fun(20);        20 5 10

fun(20,30);     20 30 10

fun(20,30,40);   20,30,40

函数重载:

要求:1 函数名相同

              2 参数类型,个数不同

int gett(int x, int y);

Int gett(double x,double y);

 

C++内存管理

1 内存本质:资源

2 操作系统掌控

3 申请归还资源--------------------内存管理

 

New delete只是关键字。

申请 new   int * p = new int;      int * arr = new int[10];

释放:delete   delete p;             delete []arr;

注意事项,c语言与c++都行

1   Malloc(size)           new

    Free(*)               delete

2   要判空

3   delete p; 

p=NULL;

 

posted @ 2017-05-07 16:28  freebirds  阅读(95)  评论(0)    收藏  举报