2

こんにちは、私は C を学んでおり、チュートリアルに従っています。ポインターの基本について読みました。

main(int argc, char *argv[])

の解釈の仕方がよくわかりませんchar *argv[]

CharPointer が argv 配列を指しているのか、それとも char で構成された chararray へのポインタを指しているのか、と読みますか?

[アップデート]

私は間違っているかもしれませんが、私はよく知っているので混乱していると思います:

Char* argv[] // char 配列へのポインタ Char argv[]* // pointee に値を設定

しかし、私は char *argv[] を見たことがありません

4

3 に答える 3

2

.一次演算子、->、および[]が のような単項演算子よりも優先度が高いことに注意して、C 宣言を裏返しに読み取ります*。したがって、最も深くネストされたものから始めて、優先順位で左または右を選択して、左または右に、裏返しに移動します。

char *argv[]; // argv is an array of pointer to char
int (*f)();   // f is a pointer to a function returning int

実行できる完全な例を次に示します。

int main(void);

// g is an array of pointer-to-function with no parameters returning int
int (*g[])(void) = {
  main,
  main
};

// f is an array of pointer-to-array of pointer-to-function returning int
int (*(*f[2])[2])(void) = {
  &g,
  &g,
};


int main(void) {
  return *f[0][0] == main;
}

$ ./a.out
$ echo $?
# => 1
于 2013-04-22T01:52:37.153 に答える
0
char *argv[]

argvは変数/パラメータ名であり、 ではないtypeためCharPointer points to argv array、正しい理解方法ではありません。orはタイプなpointer to int array or double arrayので、いくつか言っても問題ありません。intdouble

char* argv[] は実際にはchar*( へのポインターの配列を読み取るchar) の配列であり、基本的には C 文字列の配列です。

于 2013-04-22T01:29:48.810 に答える