C言語複雑宣言


詳細
「C専門家プログラミング」の第3章では、複雑な声明をどのように分析するかを紹介し、非常によく話しています.著者が紹介した複雑な声明を分析する方法については、私は完全に把握していませんが、私は複雑な声明を解析する方法を持っています.いわゆる道はローマに通じています.結果が同じであれば、過程を気にしなければなりません.今日ネット上でいくつかの複雑な声明を探して、練習手(声明の例はすべてネットから来て、許しの出所は詳しくありません).この文をメモして、マークを作って、後で味わいます.
int (*func)(int *p)
これは説明しないで、すべてのC言語の参考書にあります.C/C++プログラマーとしてまだできないなら、あなたはもうアウトになったことを説明します~~~~~~~~~
int (*func)(int *p, int (*f)(int*))
funcは1つのポインタで、1つの関数を指し、関数は2つのパラメータを受信し、第1のパラメータはint*であり、第2のパラメータは関数ポインタ(この関数ポインタはint*パラメータを受信し、int値を返す)であり、関数はint値を返す.typedefを使用して簡略化します.
int (*func)(int *p, int (*f)(int*));
/*     */
typedef int (*functor1)(int *);
typedef int (*functor2)(int *, functor1);
functor2 func;

int (*func[5])(int *p)
funcは5つの要素を含む配列で、配列の各要素は関数ポインタであり、関数はint*パラメータを受信し、int値を返します.typedefで簡略化します.
int (*func[5])(int *p);
/*     */
typedef (*functor)(int *);
functor func[5];

int (*(*func)[5])(int *p))
funcはポインタで、ポインタは5つの要素を含む配列を指し、配列は各要素がint*パラメータを受信し、int値を返す関数ポインタである.funcが何なのかを次のコードで表します.
int (*(*func)[5])(int *p);
/* func       : */
typedef int (*functor)(int *);
functor arr[5];
func = &arr;

int (*(*func)(int *p))[5]
funcはポインタであり、ポインタは関数を指し、関数はint*パラメータを受信し、ポインタを返し、ポインタは5つの要素を含むint型配列を指す.typedefで簡略化します.
int (*(*func)(int *p))[5];
/*     */
typedef int arr[5];
typedef arr *(*functor)(int *);
functor func;

int (*(*func)[5][6])[7][8]
funcはポインタで、ポインタは行数5、列数6の2次元配列を指し、配列にはポインタが保存され、ポインタは行数7、列数8のint型配列を指す.次のコードは、より明確になるかもしれません.
int (*(*func)[5][6])[7][8];
/* see it: */
typedef int arr[7][8];
arr *func1[5][6];
func = &func1;

int (*(*(*func)(int *))[5])(int *)
funcは関数ポインタであり、関数はint*パラメータを受信し、ポインタを返し、ポインタは5つの要素を含む配列を指し、配列中の要素は関数ポインタであり、関数はint*パラメータを受信し、int値を返す.typedefで簡略化します.
int (*(*(*func)(int *))[5])(int *);
/*     */
typedef int (*functor1)(int *);
typedef functor1 arr[5];
typedef arr *(*functor2)(int *);
functor2 func;

int (*(*func[7][8][9])(int*))[5]
funcは3つの配列で、配列の各要素はポインタで、ポインタは関数を指し、関数はint*パラメータを指し、5つの要素を含むint配列(嗷口)とtypedefを返して簡略化します.
int (*(*func[7][8][9])(int*))[5]; 
/*     */
typedef int arr[5];
typedef arr *(*functor)(int *);
functor func[7][8][9];

これらの例を見て、気絶しましたか.急いで美人を探して、人工呼吸をしてあげましょう~~~~