C++学习笔记 DAY1

一、引用

1.写法

类型名 & 引用名 = 某变量名; 

int n = 4;
int & r = n;  // r引用了n,r的类型是 int &

变量的引用完全等价与变量,变量更改引用也更改,引用更改变量也更改,引用又叫变量的别名。

2.注意事项

* 定义引用一定要将其初始化为引用某个变量。

* 引用从一而终,一旦初始化,始终引用第一次初始化的变量,不可更改。

(若其后程序出现 r = b,则为赋值关系,b=r=n)

(一个引用只对应一个变量,一个变量却可以有多个引用)

* 只能引用变量,不能引用常量和表达式。

3.引用的应用

(1)作为函数形参,实现通过修改形参改变实参。

void swap(int & a,  int & b)
{
    int tmp;
    tmp = a;
    a = b;
    b = tmp;
}
int main()
{
    int n1,n2;
    swap(n1,n2); //n1,n2作参数,无&,比指针更简洁
    return 0;
}

(2)作为函数的返回值,实现对函数调用赋值

int n = 4;
int & SetValue()
{
    return n;
}
int main()
{
    SetValue() = 40; // 对函数的调用赋值,全局变量n变为40
    cout << n;
    return 0;
}

4.常引用

int n;
const int & r = n; // r的类型是 const int &

* 不能通过修改常引用修改引用的变量(通过直接修改变量改变引用内容)

* const T & 和 T & 是不同类型,可以用 T &初始化 const T &,反之只能进行强制类型转换

二、const 关键字

1.用法 

(1)定义常量(define的上位代替)

const int MAX = 23; //不同于define 有类型,便于类型检查
const char * SCHOOL_NAME = "Peking University";

(2)定义常量指针(常用作函数参数,避免误改实参)

const int * p = &n;

* 不能通过常量指针修改它指向的内容

* 常量指针的指向可以变化

* 不能将常量指针赋值给非常量指针(除非强制类型转换,p2 = (int *)p1),反之可以

(3)定义常引用(见上)

三、动态内存分配(new运算符实现)

1.用法 (T:任意类型名。P:指针。N:分配元素个数,可以是整形表达式。)

(1)分配一个变量

          P = new T;   // P 是 T* 指针

 (2)分配一个数组

           P = new T[N]; //将N*sizeof(T)大小的内存空间起始地址赋给P

2.返回值类型

new T;

new T[N]; 

返回值为T*

int * p = new int;

 3.delete释放动态分配的空间

delete 指针;  // 指针指向new出来的空间

// 变量

int * p = new int;
* p = 5;
delete p;
delete p; // 错误!一片空间只能被delete一次


//数组

int * p = new int[20];
 p[0] = 5;
delete [] p;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值