0
   int a=4;
   int *p=&a;

この構文は正しいですが、このように書くと

   int a;
   int *p;
   *p=&a;

3行目はエラーであり、それはわかっていますが、最初のコードでそれが可能なのはなぜですか

   int *p=&a;

関数への参照によって値を渡すときにもこれを行います...返信ありがとう

4

3 に答える 3

4

int *p=&a;、あなたは

  • pint へのポインタである変数 ( ) を宣言する
  • aへのアドレスの割り当てp

同等のコードは次のようになります

int *p; // declare a pointer variable 'p'
p = &a; // assign the address of a to 'p'

3 行目*p=&a;はエラーです。なぜなら、はアドレスがであるポインタの*p(整数) 値を示しているからです。pintaddress of an intpointer to an int

于 2013-09-07T16:07:00.633 に答える
3

タイプはint *. したがって、一般的なパターンが次の場合:

T a;
T b;
a = b;

の場合T = int *、パターンは次のとおりです。

int * p;
p = &n;     // n is an int

型指定子の " *" は、 " "とも呼ばれる、ほとんど無関係な単項演算子と混同しないでください。 int **

于 2013-09-07T16:04:03.690 に答える
1

入力するとき

    int *p;

ポインタ p を宣言しています。宣言された後に * を再度使用すると、ポインターが逆参照されます。それで

    *p = &a;

「ポインタ p 内の値 = 値 a への参照」と言うでしょう。

正しい解決策は

    int *p;
    p = &a
于 2013-09-07T16:04:36.520 に答える