ポインターは、変更可能な (非 const) データまたは定数データへのポインターを指すものとして宣言できます。
ポインターは、関数を指すように定義できます。
const
同僚とポインターでの「const」の使用について話し合っていたところ、関数ポインターでの使用に関する質問が出てきました。
ここにいくつかの質問があります:
- 定数関数へのポインタと非定数関数へのポインタの意味は何ですか?
- 関数を const にすることはできますか?
- 関数を非 const (変更可能) にすることはできますか?
- 関数ポインタを渡すための適切な (安全な) 構文は何ですか?
編集 1: 関数ポインターの構文
typedef void (*Function_Pointer)(void); // Pointer to void function returning void.
void function_a(Function_Pointer p_func); // Example 1.
void function_b(const Function_Pointer p_func); // Example 2.
void function_c(Function_Pointer const p_func); // Example 3.
void function_d(const Function_Pointer const p_func); // Example 4.
上記の宣言は、関数ポインターを組み込み型へのポインターのように扱う例です。
データ、変数、またはメモリ ポインターを使用すると、上記の組み合わせが可能になります。
したがって、質問は次のとおりです。関数ポインターは同じ組み合わせを持つことができますか、そして const 関数へのポインターは何を意味しますか (例 2 など)?