目录:
内联函数
/*
01)c语言中的宏,例如:
#define SQUARE(X) X*X
a = SQUARE(5.0); //等价于a = 5.0*5.0 正常
b = SQUARE(4.5+7.5) //等价于b = 4.5+7.5*4.5+7.5,则不
正常了,可以通过#define SQUARE(X) ((X)*(X))方法改进
d = SQUARE(c++) //等价于d = c++ * c++ c最后的值会增加两次 假如c等于3 c++ * c++就等价于3*4 最后c等于5,
而在宏定义出现类似的错误的时候,可以考虑使用内联函数
02)要是有内联函数,要采取下述措施之一:
在函数生命前加上关键字inline
在函数定义前加上关键字inline
通常的做法是省略原型(函数声明),将整个定义放在本应提供原型(函数声明)的地方
03)内敛函数可以提高程序的执行速度,代价是 程序占用的
内存增加,假如程序要在10个不同的地方调用同一个内联函数,则该程序将包含该函数代码的十个副本
04)以下代码中也包含了c++后缀的使用技巧,需要注意的一个点
*/
附图说明普通函数调用和内联函数调用的区别
1 #include
2
3 using namespace std;
4
5 //内联函数的定义
6 inline double square(double x) { return x * x; } //将整个函数定义放在了一行,如果函数定义占用多行,那么使用内联函数就不太合适
7
8 int main()
9 {
10 double a, b;
11 double c = 13.0;
12
13 a = square(5.0); //内联函数的调用
14 b= square(4.5+7.5); //内联函数的调用
15 cout << "a = " << a << endl;
16 cout << "a = " << b << endl;
17
18 cout << "c = " << c;
19 double d = square(c++); //后缀运算符是先使用后修改,所以c先将13传入内联函数,后将自身值递增为14
20 cout << " c square = " << d << endl;
21
22 cout << "Now c = " << c << endl;
23
24 system("pause");
25 return 0;
26 }
内联函数的定义和调用
执行结果:
引用变量(锚点为m2)
/*
01)c和c++使用&来指示变量的地址。c++赋予了&另一个含义,将其用来声明印用
int rats;
int & rodents = rats; //将rodents作为rats的别名 int &表示是指向int的引用,其中&不是地址运算符
上述声明允许将rats和rodents呼唤,他们指向相同的内存单元,将rodets加1将会影响两个变量
更准确的说rodents++操作将一个有两个名称的变量加1
02)必须在声明引用时将其初始化 如:
int rats;
int & rodents;
rodents = rats; //这样做是错误的
03)引用和指针是有区别的
int rets;
int* parts = &rats; //声明并初始化一个指针parts,该指针指向rats
int & rodents = rats; //声明并初始化一个引用rodents,使rodents成为rats的别名
这样表达式rodents和*parts都可以和rats呼唤,而表达式&rodents和parts也都可以和&rats互换
04)引用更接近于const指针,必须在创建时进行初始化,一旦与某个变量关联起来,就一直效忠于它
也就是说:int & rodents = rats;
实际上是该代码的伪装表示:int* const pr = &rats;
其中引用扮演的角色与表达式*pr相同
05)int rats = 101;
int* pt = &rats; //声明并初始化一个指针parts,该指针指向rats
int & rodents = *pt; //由于*pt就等价于rats,所以该句的意思就是声明并初始化一个引用rodents,使rodents成为rats的别名
int business = 50;
pt = &business; //pt改为指向business,但是rodents还是指向rats
*/
1 #include
2
3 using namespace std;
4
5 int main()
6 {
7 int rats = 101;
8 int & rodents = rats; //声明并初始化一个引用rodents,使rodents成为rats的别名
9
10 cout << "value of rats is: " << rats << "; " << "Address of rats is: " << &rats << endl;
11 cout << "value of rodents is: " << rodents << "; " << "Address of rodents is: " << &rodents << endl;
12
13 int business = 50;
14 rodents = business; //等价于rats = business,执行完此句之后,rats和rodents的值都会改变为50,且二者的地址相同,但二者的地址和business是不一样的
15 cout << "value of business is: " << business << "; " << "Address of business is: " << &business << endl;
16 cout << "value of rats is: " << rats << "; " << "Address of rats is: " << &rats << endl;
17 cout << "value of rodents is: " << rodents << "; " << "Address of rodents is: " << &rodents << endl;
18
19 system("pause");
20 return 0;
21 }
引用变量的声明和初始化
执行结果为:
标签:__,rats,函数,int,c++,rodents,内联
来源: https://www.cnblogs.com/YiYA-blog/p/10546023.html