程序員面試寶典——第五章習題解析

         因爲之前已經看過關於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+b
int 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語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章