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
原创粉丝点击