打印变量(或指针)的存储位置 [英] print the memory location of a variable (or pointer)

查看:152
本文介绍了打印变量(或指针)的存储位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to print where a variable is stored. I Google it and I found this:

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

如果我写这篇文章,是不是?

If I write this, is it right?

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

我编译它,我没有得到任何错误或警告,但载文,如果我把他们都在节目中的两个语句不返回相同的值。

I compiled it and I don't get any errors or warnings but theses two statements don’t return the same value if I put both of them in the program.

推荐答案

比方说你有这些声明:

int i;
int *p = &i;

这将是这个样子的记忆:

It would look something like this in memory:


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

如果您再使用&安培; P 你得到一个指针 P ,让你有这样的:

If you then use &p you get a pointer to p, so you have this:


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

所以 P 的值为的地址我的价值&安培; p p 的地址。这就是为什么你会得到不同的值。

So the value of p is the address of i, and the value of &p is the address of p. That's why you get different values.

这篇关于打印变量(或指针)的存储位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆