2023年8月18日,周五上午
今天在B站看Qt教學視頻的時候遇到了
目錄
- 語法
- 和typedef或using結合
- 我的總結
語法
返回類型 (*指針變量名)(參數列表)
以下是一些示例來說明如何聲明不同類型的函數指針:
聲明一個不接受任何參數且返回void的函數指針:
void (*ptr)();
聲明一個接受一個整數參數且返回int的函數指針:
int (*ptr)(int);
聲明一個接受兩個整數參數且返回float的函數指針:
float (*ptr)(int, int);
聲明一個接受一個字符串參數且返回void的函數指針:
void (*ptr)(const std::string&);
和typedef或using結合
使用類型別名typedef或using來定義函數指針類型,可以提高代碼的可讀性和靈活性。
此外,可以更方便地在多個地方復用同一類型的函數指針。
// 使用typedef定義函數指針類型
typedef void (*FunctionPointer)(int);// 使用using定義函數指針類型
using FunctionPointer = void (*)(int);
在上面的代碼中使用了兩種不同的方式來定義函數指針類型FunctionPointer,
它表示一個接受一個整數參數且返回void的函數指針類型。
然后,可以使用這個類型別名來聲明函數指針變量:
#include<iostream>typedef void (*FunctionPointer)(int);using FunctionPointer = void (*)(int);void someFunction(int a){std::cout<<a<<std::endl;
}int main(){FunctionPointer ptr;ptr=someFunction;ptr(5);
}
我的總結
感覺函數指針就是給函數起別名:
通過創造一個和函數在返回值、參數列表方面一樣的函數指針,
就可以通過聲明一個這樣的函數指針來指向該函數,
此后,就可以用這個函數指針的名字來調用該函數。
這不就是給函數起別名嗎。