一.內聯函數 內聯函數和普通函數的使用方法沒有本質區別,我們來看一個例子,下麵展示了內聯函數的使用方法: 從上面我們可以看到我們定義一個內聯函數只需要在普通函數的前面加上關鍵字inline就可以了,利用內聯函數的優勢則是可以讓程式不需要跳轉到另一個位置執行代碼,直接遇到我們所定義的函數就可以進行執行 ...
一.內聯函數
內聯函數和普通函數的使用方法沒有本質區別,我們來看一個例子,下麵展示了內聯函數的使用方法:
#include <iostream> using namespace std; //下麵展示內聯函數的使用 inline double square(double x) { return (x*x); } int main() { int a=12; int b; b=square(a); cout<<b;//差點把C++當成Android了...... 就沒有寫cout,尷尬了 }
從上面我們可以看到我們定義一個內聯函數只需要在普通函數的前面加上關鍵字inline就可以了,利用內聯函數的優勢則是可以讓程式不需要跳轉到另一個位置執行代碼,直接遇到我們所定義的函數就可以進行執行了。因此會節省一些運行的時間。但是這個函數並沒有得到廣泛的使用,是因為使用這個,則會在另一方面增大系統的開銷。一般前況下,如果執行函數代碼的時間比處理函數調用的時間更長,則推薦使用這種方式,但如果執行函數代碼的時間比處理函數調用的時間更短,則使用普通函數的效率會顯得更高一些,因為我們算的是總體的程式運行時間。不然在第二種情況下,所有的程式資源都用於調用函數上面去了,我覺得實在是太花費時間了。
二.引用變數
1.一般情況下的引用變數是我們現有變數的一個拷貝,相當於我們可以利用一個新的變數名稱來代替原變數的使用,下麵是一個小例子:
#include <iostream> using namespace std; int main() { int rats=101; int &rodents=rats;//這裡定義了引用變數rodents cout<<"rats="<<rats; cout<<",rodents="<<rodents<<endl; rodents++; cout<<"rats="<<rats; cout<<",rodents="<<rodents<<endl;
cout<<"rats的地址是"<<&rats<<endl;
cout<<"rodents的地址是"<<&rodents<<endl;
}
輸出結果:
rats=101,rodents=101 rats=102,rodents=102
rats的地址是0x6ffe34
rodents的地址是0x6ffe34
從中可以知道rats和rodents的值是相同的,就連地址都是相同的。
2.如果我們將第三個變數賦值給rodents變數,會有什麼不同呢?
程式如下:
#include <iostream> using namespace std; int main() { int rats=101; int &rodents=rats;//這裡定義了引用變數rodents int c=41;//這裡我們定義的是第三者 cout<<"rats="<<rats; cout<<",rodents="<<rodents<<endl; rodents++; cout<<"rats="<<rats; cout<<",rodents="<<rodents<<endl; cout<<"rats的地址是"<<&rats<<endl; cout<<"rodents的地址是"<<&rodents<<endl; //下麵進入第三者,一個很神奇的第三者 cout<<"下麵我們進入第三者"<<endl; rodents=c; cout<< "rats="<<rats<<endl; cout<<"rodents="<<rodents<<endl; cout<<"rats的地址是"<<&rats<<endl; cout<<"rodents的地址是"<<&rodents<<endl; cout<<"c的地址是"<<&c<<endl; }
結果如下:
rats=101,rodents=101 rats=102,rodents=102 rats的地址是0x6ffe34 rodents的地址是0x6ffe34 下麵我們進入第三者 rats=41 rodents=41 rats的地址是0x6ffe34 rodents的地址是0x6ffe34 c的地址是0x6ffe30
這個時候我們可以看到第三者的地址和前兩者的地址是不一樣的,但是值卻是一樣的,因為這種情況就相當於將第三者直接複製給了第一者,其間的引用並沒有對它產生任何在地址上的影響,這也十分容易理解。