yay*_*zis 2 c variables pointers memory-address
我想打印存储变量的位置.我谷歌它,我发现了这个:
int *p;
printf("memory location of ptr: %p\n", (void *)p);
Run Code Online (Sandbox Code Playgroud)
如果我写这个,是不是?
printf("memory location of ptr: %p\n", &p);
Run Code Online (Sandbox Code Playgroud)
我编译它,我没有得到任何错误或警告,但如果我把它们都放在程序中,这两个语句不会返回相同的值.
让我们说你有这些声明:
int i;
int *p = &i;
Run Code Online (Sandbox Code Playgroud)
它在内存中看起来像这样:
+---+ +---+ | p | --> | i | +---+ +---+
如果你然后使用&p你得到一个指针p,所以你有这个:
+----+ +---+ +---+ | &p | --> | p | --> | i | +----+ +---+ +---+
所以值p是地址i,而值&p是地址p.这就是为什么你得到不同的价值观.
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |