C++ ポインタ 表示
解決したいこと
該当するソースコード
#include
int main() {
int i,* p;
i = 3;
i = *p;
printf("%d", i);
printf("%d", &i);
printf("%d", p);
printf("%d", *p);
}
自分で試したこと
上のコードを書きました。
これは、問題に適している答えになっていますかね?
お願いします。
0
#include
int main() {
int i,* p;
i = 3;
i = *p;
printf("%d", i);
printf("%d", &i);
printf("%d", p);
printf("%d", *p);
}
上のコードを書きました。
これは、問題に適している答えになっていますかね?
お願いします。
iへのポインタをpに代入してから
の要件を満たしていません.
これは何の問題なの?
int i;
int *p; 私には未だにスッキリしない箇所です。
p = &i; 出題ではこの行は次の下
i = 3; 逆にするとポインタを理解し易い
printf("%d %p %p %d", i, &i, p, *p);
この不規則な順番が引っ掛け?
出題に反し i = 3 を後に記述してます。
これにより、p = &i が値の格納とは無関係に処理されることが確認できます。
尚、ポインタはint型ではありません。
int *p は16進数のポインタ型(%p)の変数 p を宣言しているのですが、ポインタは値の開始アドレス位置を差し示すだけです。int *p とすることで値の長さ(ポインタ変数が利用できる終点)を同時に指定しています。
つまり、int *p は 長さ int長 の値のアドレス番号のポインタ変数 p を宣言してます。尚、* & はポインタ演算子で + - * / のようなものです。(*が被っているが!)