c++ - C语言声明问题
阿神
阿神 2017-04-17 15:26:17
0
3
461

以下声明

#include<stdio.h>

int main()
 {
    char *(*s)[ ];
    return 0;   
}

为啥可以这样声明呢?
1.请问这样声明的指针指向的空间是?

阿神
阿神

闭关修行中......

全員に返信(3)
巴扎黑

char *(*s)[ ];優先順位として、(*s)を最初にお読みください。ポインタと配列は変換できるので、(*s)s[] に変換されます。したがって、上記の式は char *s[][];
に変換され、最初に s[][] が であるかどうかを判断します。 二维数组 を先頭に追加します。 "" 記号は、各要素が char (つまり、文字列) であることを示します。

もう 1 つ、括弧が中にない場合は次のようになります: char **s[] の場合は異なります。優先順位に従って、s は最初に下付き文字、つまり s[] と結合され、一维数组 として表現され、次に前の 2 つの "*" 記号と結合され、配列内の要素がポインタからポインタへ。

いいねを押す +0
阿神

s は char 配列へのポインタ、または char*

へのポインタです。
いいねを押す +0
Ty80

@大达家は、C のステートメントを説明するために 1 章を費やしました。以前に読書メモを書きました。「C エキスパート プログラミング」を読みながら読むことができます。 1-3)

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート