您的位置:首页 > 其它

引用&指针

2018-03-13 12:48 183 查看
定义
引用不是定义一个新的变量,而是给一个已经定义的变量起个别名
格式
类型& 引用变量名=已定义过的变量名;
int& b=a;
特点
一个变量可以有多个别名
引用必须初始化
引用只可在初始化的时候引用一次,不可变成其他变量别名#include <iostream>
using namespace std;

int main()
{
int a = 10;
int& b = a;//引用
int c = 100;
b = c;//赋值
cout << a << endl;
system("pause");
return 0;
}
const引用#include <iostream>
using namespace std;

void test()
{
int a = 1;
const int& b = a;
a = 10;//YES a的值改变,b的值也随之改变
//b = 5;//NO 不能给常量赋值

const int c = 1;
const int& d = c;
//int& e = c;//NO

const int& f = 15;//f为常量15的别名
}

int main()
{
test();
system("pause");
return 0;
}


在C中将范围大的与范围小的进行比较,会进行整型提升
引用做参数#include <iostream>
using namespace std;

void swap1(int& l, int& r)
{
int tmp = l;
l = r;
r = tmp;
}

void swap2(int* l, int* r)
{
int tmp = *l;
*l = *r;
*r = tmp;
}

int main()
{
int a = 10;
int b = 30;
swap1(a, b);
swap2(&a, &b);
system("pause");
return 0;
}值传递:若形参为非引用方式的值传递,则生成局部临时变量接受实参的值
引用传递:若形参为引用类型,则形参是实参的别名
当不希望函数内部改变参数的值时,使用常引用传参void test(const int& x)
{
//...
}引用做返回值



结论:
不要返回临时变量的引用,临时变量出作用域不存在,引用指向非法空间
若返回对象出当前函数作用域依旧存在(传参传入的参数,静态变量,全局变量),尽量使用引用返回,减少空间的开辟
引用和指针的联系与区别:
1.引用只能在定义时初始化一次,之后不可变成其他变量别名;指针变量的值可以改变
2.引用必须指向有效的变量;指针可以为空
3.sizeof引用得到的是所指向的变量的大小;sizeof指针得到的是所指向变量的地址的大小
4.引用和指针自增(++)自减(--)不一样
5.引用比指针安全,指针所指的地址释放后最好置为空,否则可能存在野指针,造成内存泄漏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: