Pyd*_*man 1 c pointers memory-address
如果我在OS X上运行以下命令:
int main (void)
{
int* n; // initialise(declare) pointer
*n = 20; // the value in address pointed to by n is 20
printf("n: %i, n&: %i\n", n, &n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
n:1592302 512,n&:1592302 480
为什么不同的价值观?
为什么
pointer而&pointer有不同的价值观?
表达式&n产生n自身的地址,同时n计算指针的值,即它指向的东西的地址.
但请注意,您有未定义的行为首先,因为您正在取消引用未初始化的指针.你需要在n某处写点.
例如,
int* n;
int i = 42;
n = &i;
// now you can de-reference n
*n = 20;
Run Code Online (Sandbox Code Playgroud)
其次,你有错误的printf说明符&n.你需要%p:
printf("n: %i, &n: %p\n", n, &n);
Run Code Online (Sandbox Code Playgroud)