C++学习笔记三——内联、宏和引用变量
2016-11-10 11:16
369 查看
1、常规函数和内联函数
常规函数和内联函数调用过程如下图:
2、内联和宏
3、引用变量
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { /**/ int i = 1,k=2; int & j = i; int *p = &i; cout << &i << " " << i << endl; cout << &j << " " << j << endl; cout << &k << " " << k << endl; cout << "指针p被重新定义前的指向地址和值:" << endl; cout << p << " " << *p << endl; int & pi = *p; cout << "引用变量pi的指向地址和值:" << endl; cout << &pi << " " << pi << endl; p = &k; cout <<"指针p被重新定义后的指向地址和值:"<< endl; cout << p << " " << *p << endl; cout << "引用变量pi在p被重新定义后的指向地址和值不变仍为:" << endl; cout << &pi << " " << pi << endl; cout << "说明引用变量在初始化后指向的地址成了常量(const)" << endl; i = 3; cout << "但存储单元里的值发生变化后,引用变量值跟着变化" << endl; cout << "i = 3 后,pi值为" << endl; cout << &pi << " " << pi << "(地址不变,值变化)"<<endl; //引用必须在生命引用变量是初始化 return 0; }效果如下:
4、临时变量、引用参数和const
什么时候创建临时变量?1,实参的类型正确,但不是左值;
2,实参的类型不正确,但可以转换为正确的类型。
注:左值——可被引用的数据对象,eg:变量、数组元素、结构成员、引用和解除引用的指针。
非左值——字面常量(用引号括起来的字符串除外,他们有其地址表示)和包含多项式的表达式。
(在C中,左值最初为可出现在赋值语句左边的实体(在引入const之前))
注:在函数中:如果接受引用参数的函数意图是修改参数传递的变量,则创建临时变量会组织引用参数的改变。
引用应尽可能使用const
1,可避免无意中修改数据的编程错误2,使函数能够处理const和非const实参,否则只能接受非const数据
3,使函数能够正确生成并使用临时变量
注:当函数返回值为结构和类引用时,节省时间和内存
因为:传统返回值将计算所得结果先复制到一位置,然后复制给调用。返回引用则直接使用别名访问数据,节省了时间和内存!
相关文章推荐
- C++学习笔记29,引用变量(1)
- C++学习笔记29,引用变量(1)
- C/C++中关于地址、指针和引用变量的学习笔记(三) : 结构
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- C/C++中关于地址、指针和引用变量的学习笔记(九) : 内存结构
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- [c++学习笔记]反汇编角度看变量名和引用作为函数参数
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- c++ Premier 学习笔记(unit2 变量和基本类型 -引用
- 【C++】学习笔记四十——引用变量
- C++ 学习笔记(2)变量和基本类型(复合类型:引用、指针)、const、constexpr、typedef(using)、auto、decltype
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- C/C++中关于地址、指针和引用变量的学习笔记(八) : 命令行参数
- C/C++中关于地址、指针和引用变量的学习笔记(五) : 指针
- C++学习笔记十四之引用变量&
- C/C++中关于地址、指针和引用变量的学习笔记(一)
- C++学习笔记,引用变量
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- C++学习笔记――引用与拷贝构造函数
- c++学习笔记:void*变量,在函数内必须要明确变量类型