如何获取指针所指向的内存位置的地址

时间:2016-08-07 05:56:53

标签: c pointers

 #include <stdio.h>

    int main(void)
    {
        int i = 3;
        int* j = &i;
        printf("%u",j);
    }

上面的代码应该打印出包含整数3的内存块的地址(无符号整数)。但相反,我得到这个错误 - error: format specifies type 'unsigned int' but the argument has type 'int *'

我从各种渠道证实: 1. *j是指&#34;存储在j&#34;中的地址的值 2. &j指存储指针j的存储块的地址 3. j包含一个unsigned int值,它是j指向的内存块的地址。

2 个答案:

答案 0 :(得分:2)

您的%u不正确。 j是一个指针,因此您应该使用%p。这种改变应该做到:

printf("%p", (void *)j);

答案 1 :(得分:2)

当您尝试打印地址时需要p标记 - 请参阅printf手册页。

因此代码应为

#include <stdio.h>
int main()
{
    int i = 3;
    int* j = &i;
    printf("%p",(void *)j);
}

请参阅here