以下声明
#include<stdio.h> int main() { char *(*s)[ ]; return 0; }
为啥可以这样声明呢?1.请问这样声明的指针指向的空间是?
闭关修行中......
char *(*s)[ ];優先順位として、(*s)を最初にお読みください。ポインタと配列は変換できるので、(*s) は s[] に変換されます。したがって、上記の式は char *s[][]; に変換され、最初に s[][] が であるかどうかを判断します。 二维数组 を先頭に追加します。 "" 記号は、各要素が char (つまり、文字列) であることを示します。
char *(*s)[ ];
(*s)
s[]
char *s[][];
s[][]
二维数组
もう 1 つ、括弧が中にない場合は次のようになります: char **s[] の場合は異なります。優先順位に従って、s は最初に下付き文字、つまり s[] と結合され、一维数组 として表現され、次に前の 2 つの "*" 記号と結合され、配列内の要素がポインタからポインタへ。
char **s[]
一维数组
s は char 配列へのポインタ、または char*
@大达家は、C のステートメントを説明するために 1 章を費やしました。以前に読書メモを書きました。「C エキスパート プログラミング」を読みながら読むことができます。 1-3)
char *(*s)[ ];
優先順位として、(*s)
を最初にお読みください。ポインタと配列は変換できるので、(*s)
はs[]
に変換されます。したがって、上記の式はchar *s[][];
に変換され、最初に
s[][]
が であるかどうかを判断します。二维数组
を先頭に追加します。 "" 記号は、各要素が char (つまり、文字列) であることを示します。もう 1 つ、括弧が中にない場合は次のようになります:
char **s[]
の場合は異なります。優先順位に従って、s は最初に下付き文字、つまりs[]
と結合され、一维数组
として表現され、次に前の 2 つの "*" 記号と結合され、配列内の要素がポインタからポインタへ。s は char 配列へのポインタ、または char*
へのポインタです。@大达家は、C のステートメントを説明するために 1 章を費やしました。以前に読書メモを書きました。「C エキスパート プログラミング」を読みながら読むことができます。 1-3)