一、函式的定義
可以分為以下兩種:
1、函式宣告和函式定義分離
這種方法將函式宣告和函式定義分開,通常在頭檔案中先宣告函式原型,然后在源檔案中實作函式定義,
例如,頭檔案 example.h 中宣告了一個函式 add:
#ifndef EXAMPLE_H
#define EXAMPLE_H
int add(int a, int b); // 宣告函式原型
#endif //EXAMPLE_H
然后在源檔案 example.c 中實作函式定義:
#include "example.h"
int add(int a, int b) { // 實作函式定義
return a + b;
}
這種方法可以使得代碼更加模塊化,便于維護和重用,
函式宣告和函式定義結合在一起
這種方法將函式宣告和函式定義結合在一起,通常在源檔案中直接實作函式定義,
int sub(int a, int b) { // 函式宣告和定義結合在一起
return a - b;
}
這種方法比較簡單,但是當函式需要在多個源檔案中使用時,需要在每個源檔案中都復制一份函式定義,
總之,不管是哪一種方法,函式的定義都包含函式名、引數串列和函式體三部分,通過定義函式來實作特定的功能,在撰寫函式時,需要考慮函式的輸入、輸出以及具體實作邏輯,保證程式的正確性和效率,
二、函式的呼叫
可以分為以下兩種方式:
普通函式呼叫
普通函式呼叫是指通過函式名加括號的方式來呼叫函式,例如:
int a = 10, b = 5;
int result = add(a, b); // 呼叫 add 函式計算 a + b 的值,并將結果賦值給變數 result
在這個例子中,我們使用 add(a, b) 的方式來呼叫 add 函式,并將計算結果賦值給變數 result,
通過函式指標呼叫函式(法1)
另一種方式是通過函式指標來呼叫函式,函式指標是一個指向函式的指標變數,可以存盤函式的入口地址,
例如,假設有以下函式:
int add(int a, int b) {
return a + b;
}
我們可以定義一個函式指標變數 pfunc,并將其賦值為 add 函式的入口地址:
//int (*pfunc)(int, int); // 定義函式指標變數
//int* pfunc(int, int) //我的理解定義一個函式指標
pfunc = add; // 將函式指標賦值為 add 函式的入口地址
然后,我們可以通過 (*pfunc)(a, b) 的方式來呼叫 add 函式,例如:
int a = 10, b = 5;
//我的理解的通過*pfunc解參考
int result = (*pfunc)(a, b); // 通過函式指標呼叫 add 函式計算 a + b 的值,并將結果賦值給變數 result
在這個例子中,我們首先定義了一個函式指標變數 pfunc,然后將其賦值為 add 函式的入口地址,接著,我們使用 (*pfunc)(a, b) 的方式來呼叫 add 函式,并將計算結果賦值給變數 result,
通過函式指標呼叫函式(法2)
通過函式指標呼叫函式的另一種寫法是使用 typedef 關鍵字來定義函式指標型別,具體步驟如下:
使用 typedef 定義函式指標型別,
typedef int (*pfunc)(int, int);
上述陳述句定義了一個名為 pfunc 的函式指標型別,它表示一個接收兩個 int 型別引數并回傳 int 型別值的函式,
宣告函式指標變數并賦值,
pfunc ptr = add;
這行代碼宣告了一個名為 ptr 的函式指標變數,并將其賦值為 add 函式的地址,
通過函式指標呼叫函式,
int result = ptr(a, b);
這行代碼通過函式指標 ptr 呼叫 add 函式,并將計算結果賦值給 result 變數,
完整的代碼示例如下:
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
typedef int (*pfunc)(int, int);
int main() {
int a = 10, b = 5;
pfunc ptr = add;
int result = ptr(a, b);
cout << result << endl; // 輸出 15
return 0;
}
通過使用 typedef 關鍵字可以定義函式指標型別,從而使得函式指標的宣告和使用更加方便,
總之,不管是哪一種方式,都可以實作對函式的呼叫,但是需要注意的是,當函式的引數串列較長時,使用函式指標來呼叫函式可能會比較繁瑣,此時應該使用普通函式呼叫來簡化代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/548785.html
標籤:其他
上一篇:Java面向物件
