C++学习笔记三——内联、宏和引用变量
来源:互联网 发布:内控管理系统源码 编辑:程序博客网 时间:2024/06/13 09:15
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,使函数能够正确生成并使用临时变量
注:当函数返回值为结构和类引用时,节省时间和内存
因为:传统返回值将计算所得结果先复制到一位置,然后复制给调用。返回引用则直接使用别名访问数据,节省了时间和内存!
0 0
- C++学习笔记三——内联、宏和引用变量
- C/C++中关于地址、指针和引用变量的学习笔记(三) : 结构
- 【C++】学习笔记四十——引用变量
- C++学习笔记之——引用 内联函数
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- Arm汇编学习笔记(三)——GCC内联汇编
- Python学习笔记(三)—数据类型和变量
- 【C++】学习笔记三十九——内联函数
- C++primer学习笔记——引用和指针
- 函数探幽(一)——内联函数,引用变量
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- shell学习笔记(四)—— shell变量和引用
- C/C++中关于地址、指针和引用变量的学习笔记(一)
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- C/C++中关于地址、指针和引用变量的学习笔记(五) : 指针
- C/C++中关于地址、指针和引用变量的学习笔记(八) : 命令行参数
- CoordinatorLayout(嵌套AppBarLayout)的app:layout_scrollFlags属性的几种设置
- <!DOCTYPE>声明
- 前端布局、颜色
- 【Spring实战】----开篇(包含系列目录链接)
- NewStringUTF报红!
- C++学习笔记三——内联、宏和引用变量
- 用户画像初探-Sogou用户画像比赛
- 第十周项目3-利用二叉树便利思想解决问题
- http请求头If-Modified-Since & If-None-Match
- 第十一周项目1 - 二叉树层次遍历算法的验证
- 反编译一个APP就那么简单
- 第十一周项目一3由顺序存储结构转为二叉链存储结构
- 【项目1-验证算法2:二叉树构造算法的验证】
- Java学习第一章 第二节