引用&指针
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.引用比指针安全,指针所指的地址释放后最好置为空,否则可能存在野指针,造成内存泄漏
引用不是定义一个新的变量,而是给一个已经定义的变量起个别名
格式
类型& 引用变量名=已定义过的变量名;
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.引用比指针安全,指针所指的地址释放后最好置为空,否则可能存在野指针,造成内存泄漏
相关文章推荐
- c++ 中 指针的指针** 与 指针的引用 *&
- ※C++随笔※=>☆C++基础☆=>※№浅谈指针与引用
- c++ 指针,引用,* 与&
- 关于C中指针的引用*&
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- & 引用形参 与 指针
- int *pa(指针)和int *&pa(指针的引用)的区别
- 指针的引用(*&)与指针的指针(**)
- C++引用 && 指针
- 指针的引用(*&)
- c++之指针&&引用
- C++ const限定符之顶层const & 底层const & 指针 & 引用之间的关系
- C语言——结构体与指针引用&结构体数组与指针引用
- 指针与对指针的引用,(*) VS( *&)
- C语言笔记->通过指针引用数组
- int *pa(指针)和int *&pa(指针的引用)的区别
- 【C++】指针&引用的区别
- 引用的作用&引用与指针的区别
- C++11笔记(3)——引用&指针辨析
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态