gpt4 book ai didi

c - 打印变量(或指针)的内存位置

转载 作者:行者123 更新时间:2023-12-04 11:46:06 24 4
gpt4 key购买 nike

我想打印变量的存储位置。我谷歌了一下,发现了这个:

int *p;
printf("memory location of ptr: %p\n", (void *)p);

如果我这样写,对吗?

printf("memory location of ptr: %p\n",  &p);

我编译了它,但没有收到任何错误或警告。但是,上面的两个命令并没有返回相同的值!

最佳答案

假设您有这些声明:

int i;
int *p = &i;

它在内存中看起来像这样:

+---+     +---+| p | --> | i |+---+     +---+

如果您随后使用 &p你得到一个指向 p 的指针,所以你有这个:

+----+     +---+     +---+| &p | --> | p | --> | i |+----+     +---+     +---+

所以p的值是i的地址,以及 &p 的值是p的地址.这就是您获得不同值的原因。

关于c - 打印变量(或指针)的内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20374880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com