int a
との違いを理解しようとしていますint *a
。最初のステップは、 の printi で得られる値を確認することでし%p
たint a
。もちろん、コンパイラは警告を表示しますが、次のコードのジョブを完了します。
#include <stdio.h>
int main() {
int a;
printf("a - declared");
printf("int a = [%d]\n", a); // example - 1745899614
printf("int a pointer = [%p]\n", a); // example - 0x6810505e
a = 10;
printf("a - initialized to value of 10\n");
printf("int a = [%d]\n", a); // exmaple - 10
printf("int a pointer = [%p]\n", a); // example - 0xa
return 0;
}
そして、ソース コードで述べたように、 の の値を 16 進数で表すと、ある程度満足のいく結果が0xa
得10
られ%p
ますint a
。しかし、実際にint
そのアドレスを指している場合ですか、それともコンパイラがそのような場合に意味を理解しようとしているだけ%p
ですか?
int
sに割り当てられたメモリはどこですか? それをテストするにはどうすればよいですか?