int a=4;
int *p=&a;
この構文は正しいですが、このように書くと
int a;
int *p;
*p=&a;
3行目はエラーであり、それはわかっていますが、最初のコードでそれが可能なのはなぜですか
int *p=&a;
関数への参照によって値を渡すときにもこれを行います...返信ありがとう
とint *p=&a;
、あなたは
p
int へのポインタである変数 ( ) を宣言するa
へのアドレスの割り当てp
同等のコードは次のようになります
int *p; // declare a pointer variable 'p'
p = &a; // assign the address of a to 'p'
3 行目*p=&a;
はエラーです。なぜなら、はアドレスがであるポインタの*p
(整数) 値を示しているからです。p
int
address of an int
pointer to an int
タイプはint *
. したがって、一般的なパターンが次の場合:
T a;
T b;
a = b;
の場合T = int *
、パターンは次のとおりです。
int * p;
p = &n; // n is an int
型指定子の " *
" は、 " "とも呼ばれる、ほとんど無関係な単項演算子と混同しないでください。 int *
*
入力するとき
int *p;
ポインタ p を宣言しています。宣言された後に * を再度使用すると、ポインターが逆参照されます。それで
*p = &a;
「ポインタ p 内の値 = 値 a への参照」と言うでしょう。
正しい解決策は
int *p;
p = &a