c++

c++函數

c++函數

讓我們看看c++方法或函數。函數或方法是在調用時執行的代碼塊。函數用於執行某些操作,它們對於模塊化編程非常重要,特別是重用代碼,即定義一次代碼,然後多次使用它。函數是一組語句,作為一個整體來完成一個任務。每個c++程序至少有一個函數,即main(),它是程序的入口點。如果一個程序的功能被分解成多個功能,那麼它就被稱為遵循模塊化的方法。函數也被稱為方法、子程序或過程等。

大多數程序員根據邏輯上將特定任務劃分為許多函數,將他們的代碼劃分為單獨的函數。例如,為了編寫一個基於CLI的計算器應用程序,我們需要顯示菜單的函數,加、減、乘、除和取模運算的函數,顯示結果的函數等。

函數聲明或其簽名由其名稱、返回類型和傳遞給它的參數集組成。它的語法是

 functionName(具有類型和名稱的形式參數列表,如 name,  name…);

如。

int addTwoInt(int &a, int &b);函數定義提供函數的實際主體。一個完整的函數就像這樣return_type function_name(參數列表){//函數體…}

c++函數定義由函數頭(沒有分號的聲明部分)和函數體組成。讓我們簡要解釋每一部分:

返回類型是函數返回的對象類型。它可能存在,也可能不存在。函數可以返回一個值。如果函數正常工作但沒有返回任何東西,則必須將return_type用作void。

  1. 函數名調用i的函數名。函數名和參數列表一起構成函數簽名。
  2. 形參或實參——它實際上是一個占位符,讓編譯器知道傳遞給函數的對象類型。通過將值作為參數傳遞給函數來調用函數。參數列表是指函數的參數的類型、順序和數量。參數可能存在,也可能不存在。
  3. 函數或方法體——它是實現方法指定任務的整個邏輯所在之處。它是用{}括起來的一組語句。

c++標準庫提供了許多程序可以調用的內置函數。例如,函數strcat()連接兩個字符串,函數memcpy()將一個內存位置複製到另一個位置,以及許多其他函數。

為了使用一個函數,你需要調用它或通過提供所需的參數來調用它,並將它的返回值存儲在一個return_type變量中(如果函數返回一些東西)。例如,考慮下麵的兩個整數相加的簡單程序。將以下代碼複製到simpleAdd.cpp文件中

#include  using namespace std;/* *正式函數簽名。*注意作為const引用傳遞的形參,以便函數不會無意中修改它們*/ int addInt(const int &n1, const int &n2);Int main() {Int num1=10;int num2 = 20;int總和;//通過傳入參數nuk1和num2調用函數sum,並將輸出存儲在sum sum = addInt(num1, num2)中;/ /顯示結果cout < <”和“< < num1 < <”和“< < num2 < <”是:“< <和< < endl;} int addInt(const int &n1, const int &n2){返回(n1+n2);}

現在編譯並執行代碼

(base) 9:09:13:~ % g++ simpleAdd.cpp

(基數)9:09:14:~ % ./a.out

10和20的和是:30

可以在函數定義中為任何形參指定默認值。如果調用該函數時,相應的實參為空,則將使用此值。這可以通過使用賦值操作符將值賦給參數來實現。如果在函數調用中沒有為該參數傳遞值,則使用默認的給定值,但如果指定了值,則忽略此默認值並使用傳遞的值代替。默認值參見下麵addInt()的聲明

(const int &n1, const int &n2 = 100);

讓我們使用默認值來修改simpleAdd.cpp程序。將以下代碼複製到simpleAddDefault.cpp文件中

#include  using namespace std;/* *正式函數簽名。*注參數n2有默認值100 */ int addIntDefault(const int &n1, const int &n2 = 100);Int main() {Int num1=10;/ / int num2 = 20;int總和;//通過傳入參數nuk1和num2調用函數sum,並將輸出存儲在sum sum = addIntDefault(num1)中;//顯示結果cout<<"Sum of "<

現在編譯代碼並執行。在這裏,我們調用addIntDefault(),對n2使用默認值100,對n1傳遞10,以得到110的和。

(base) 9:23:56:~ % g++ simpleAddDefault.cpp (base) 9:23:59:~ % ./a。10和100的和是:110

當一個程序調用一個函數時,程序控製從調用方函數轉移到被調用方函數。被調用的函數執行定義的任務,當它的return語句被執行或到達函數結束的閉括號時,它將程序控製權返回給調用者。函數通常使用Stack數據結構執行。

形式形參或形式實參(調用函數時傳遞給函數的變量)就像函數內部的其他局部變量一樣,在進入函數時創建,在退出時銷毀。我們可以用兩種方式向函數傳遞參數

  1. 在這裏,實參的實際值被複製到函數的形式形參中(通過深度複製操作創建一個新的副本)。由於形式形參是一個新變量,因此在函數內部對它所做的更改不會影響從調用方函數傳遞的實際實參。可以通過值或指針傳遞實參。對於指針的情況,該方法將實參的地址複製到形式形參中,即創建一個新的指針變量,但指向相同的內存位置。在被調用函數內部,地址用於訪問調用中使用的實際實參,因此對形式形參的任何更改都可能影響調用方函數中原始實參的值。
  2. 這裏的引用調用沒有執行深度複製,但執行了淺複製。它將實參的引用複製到形式形參中。

這裏實際參數和形式參數共享相同的地址空間。因此,在被調用函數中所做的任何更改都將反映在調用函數中。

在本節中,讓我們思考c++中的數字。我們使用in引用定點數,使用float和double引用浮點數,這取決於它們的長度和所需的精度。c++使用+操作符進行加法和字符串連接。由於多態和操作符重載,這是可能的。

c++ numerics庫提供了通用的數學函數和類型,以及優化的數字數組和對隨機數生成的支持。例如,numerics庫的頭部分提供了幾個數學常量,如std::numbers::pi或std::numbers::sqrt2。

讓我們編寫一個示例程序來檢查給定的數字是否為回文。回文數是一種從反麵讀取時與原數相同的數字。如56744765。

將以下代碼複製到一個文件中,例如palindrom .cpp。

#include  using namespace std;Int main() {Int i,num,r,s=0;cout  << " ------------------------------------------------------------------\ n”;cout << "\n\n檢查給定數字是否是回文的程序:\n";cout  << " ------------------------------------------------------------------\ n”;cout << "Input a number: ";全國礦工工會cin > >;(我= num; > 0,){r=i % 10;s = s * 10 + r; i=i/10; } if(s==num) { cout<<" "<

現在編譯並執行程序

(base) 9:38:19:~ % g++ palindrome.cpp

(基數)9:38:25:~ % ./a.out

------------------------------------------------------------------

檢查給定數字是否是回文的程序:

------------------------------------------------------------------

輸入號碼:12344321

12344321是回文編號。

Baidu
map