离港篇
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;

浙公网安备 33010602011771号