typedef void (*Fun) (void) 理解 - 関数ポインタ - typedef 関数ポインタ
2022-02-09 22:36:19
まずはおなじみのtypedefから。
int i;//Define an integer variable i
typedef int myInt.
myInt j;//Define an integer variable j
以上、一般的によく使うtypedefの簡単な使い方を紹介しましたが、次は関数ポインタについて紹介します。
関数ポインタは次のような形式をとります。
<スパン 形式1:戻り値型(*関数名)(引数リスト)
#include <iostream>
using namespace std;
// Define a function pointer pFUN that points to a function with a return type of char and an integer argument
char (*pFUN)(int);
//define a function with a return type of char and an argument of int
//understand the function at the pointer level, i.e., the function's function name is actually a pointer
// the pointer points to the first address of the function in memory
char glFun(int a)
{
cout << a;
//return a;
}
int main()
{
//assign the address of the function glFun to the variable pFun
pFun = glFun;
//*pFun" obviously takes the content of the address pointed to by pFun, which of course means that the content of the function glFun() is taken out, and then the argument is given as 2.
(*pFun)(2);
return 0;
}
私たちは、上記の小さな例によって、関数ポインタの使い方を知っています。
そして 型定義は、関数ポインタをより直感的で便利なものにすることができます。
形式 2: typedef return type (*new type) (パラメータリスト)
typedef char (*PTRFUN)(int);
PTRFUN pFun;
char glFun(int a){ return;}
void main()
{
pFun = glFun;
(*pFun)(2);
} </span>
typedefの機能は、新しい型を定義することである。最初の文は PTRFUN という型を定義し、その型を int 型を引数にとり char 型を返す関数へのポインタとして定義しています。後でPTRFUNをint,charと同じように使うことができます。
2行目のコードでは、変数pFunにこの新しい型を定義して、フォーム1であるかのように使用することができます。
関連
-
非静的フィールドへの静的参照はできない
-
コマンドラインオプション "-std=c++11" が認識されない場合の対処法
-
java.lang.reflect.InvocationTargetException の取り扱いについて
-
コンピュータシステムの爆弾実験への深い理解
-
中に内部エラーが発生しました。「Javaツーリングの初期化」中に内部エラーが発生しました。
-
python reports an error AttributeError: module 'time' has no attribute 'clock' Solution
-
[C++ エラー処理] transform の呼び出しに一致する関数がありません。
-
VSコードデバッグが開始できない
-
閉じたファイルへのI/O操作。
-
Universal Recovery Masterの見つけ方と完全な削除方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Mac マシンに nvm をインストールする際の落とし穴 - nvm コマンドが見つかりません。
-
アクセス違反の読み取り位置 ファイルやオブジェクトを書き込む関数にベクターを渡すとエラーになる
-
デバッグアサーションに失敗しました
-
javaは起動したが、終了コード=-805306369を返した。
-
左オペランドはl値でなければならない(左オペランドは代入可能な変数でなければならない)。
-
[Errno 8] nodenameまたはservnameが提供されないか、不明です。
-
Unity エラー (1) - 名前 `xxx' は現在のコンテキストに存在しません。
-
PY 実行プログラム・プロンプト "TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'" ソリューション・インサイト
-
Volley NetworkDispatcher.run。処理されない例外 java.lang.NullPointerException
-
エラーが発生しました。ルールは1つのリソースソースしか持つことができません(提供されたリソースとテスト+インクルード+エクスクルード)。