程序员面试宝典——第五章习题解析

来源:互联网 发布:sketch 激活码 mac 编辑:程序博客网 时间:2024/05/18 04:17

         因为之前已经看过关于C++中sizeof的相关知识,并且写了总结文章,在做习题测试的时候,基本也都正确,所以这里主要是记录define、const的一些知识点。

一、define

1、define一个常量

#define A 1
#define PTR int*PTR a,b;//由于define是不含任何意义的替换,所以这里仅仅是字符串替换,等价于int *a,b,因而a为int类型的指针,b为int类型的变量

2、define一个函数

#define ADD(a,b) a+bint i=1,j=2,k=3;int s=ADD(i,j)*k;//等价于s=1+2*3,而不是(1+2*3,所以在使用时,注意加括号

二、const

         如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身为常量

int b=500;const int *a=&b;//指针指向的值为常量int const *a=&b;//指针指向的值为常量int *const a=&b;//指针为常量const int *const a=&b;//指针指向的值和指针均为常量

         如果类中的常函数,想要修改类中的成员变量,则需要将该成员变量用mutable修饰

三、inline

         内联函数和普通函数相比可以加快代码运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被嵌套到目标代码中。而宏只是一个简单的替换。
         inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说inline增加空间消耗换来的是效率提高,这方面和宏是一样的,但是inline在和宏相比没有付出任何额外代价的情况下更安全。
         inline一般用于如下情况:
1)一个函数不断被重复调用
2)函数只有简单的几行,且函数内不包含for、while、switch语句

0 0
原创粉丝点击