1. 程式人生 > >C++程序設計入門(上) 函數學習

C++程序設計入門(上) 函數學習

and wid you col 結果 class ont aic 移動

局部變量和全局變量的訪問:

全局變量的作用域時全局,局部變量的作用域是局部,若全局和局部的變量名相同的話,局部變量的改變不會引起全局變量的改變
#include<iostream> int a=1; int main() { int a=10; std::cout << a << std::endl; std::cout << ::a << std::endl; return 0; }
技術分享圖片

局部變量名與全局變量名相同時, 可使用 :: 訪問全局變量   

重載函數:

已知一個程序

int max(int num1, int num2)

{

if (num1 > num2) return num1;

else return num2;

}

如果遇到浮點數要比大小怎麽辦?

解決方法是方法是生成 一個同名不同參數的函數

編譯器如何匹配重載函數調用? ? 看參數:1. 個數 2.類型 3.順序

#include<iostream>
using namespace std;
int max(int num1,int num2)
{
    if(num1>num2)
    return num1;
    
else return num2; } double max(double num1,double num2) { if(num1>num2) return num1; else return num2; } int main() { cout << max(1,2) << endl; cout << max(3.4,5.2) << endl; return 0; }

默認參數值:

C++ allows you to declare functions with default argument values. (可以聲明帶默認參數值的 函數)

The default values are passed to the parameters when a function is invoked without the arguments. (無參調用函數時,默認值會 被傳遞給形式參數)

定義時要註意:參數列表中默認值參數應該後置

錯誤的代碼:

1 void t1 (int x, int y=0, int z);
2 void t2 (int x, int y=0, int z);

正確的代碼:

1 void t3 (int x, int y=0, int z=0); 
2 void t4 (int x=0, int y=0, int z=0);

調用時需要註意:

參數列表中實參應該前置

錯誤代碼:

t3 (1, , 20); 
t4 ( , , 20);

正確代碼:

t3 (1);    // y,z: default value 
t4 (1, 2); // z:   default value 

內聯函數:

Using functions in a program:

Advantages(優點): 易讀易維護

Drawbacks (缺點): 運行時性能開銷 • 函數調用時:參數及部分CPU寄存器的 寄存器內容進棧,控制流跳轉 • 函數返回時:返回值及寄存器值出棧, 控制流跳轉

Inline functions ? 目的:減小性能開銷

? 方法:代碼插入到調用處

? 結果:導致程序變大

用法:在函數前加關鍵字inline

inline int max (int a, int b) 
{
 return (a > b ? a : b);
} 

錯誤的代碼:

int max (int a, int b); // Call max()


 inline int max (int a, int b) 
{ 
return (a > b ? a : b); 
}

內聯函數適用於短函數

C++程序設計入門(上) 函數學習