如何在C中获取内存地址并输出?

时间:2011-01-27 04:24:52

标签: c pointers bit-manipulation

我需要获取内存地址和索引位然后我需要输出内存地址的索引。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:15)

给定C中的任何变量,您可以使用“address-of”运算符&获取其地址:

int x;
int* addressOfX = &x;

您可以使用%p中的printf说明符打印地址:

printf("%p\n", &x); // Print address of x

要访问整数值的各个位,可以使用按位移位运算符和按位AND,将所需的位移位到正确的位置,然后屏蔽掉其他位。例如,要获得x的第5位,您可以编写

int x;
int fifthBit = (x >> 4) & 0x1;

这使4位向下移位,将第5位留在LSB位。将该值与1(最低点中的1位和其他位置的0位)进行AND运算可以屏蔽掉其他位并返回该值。例如:

int x = 31; // 11111
prtinf("%d\n", (x >> 4) & 0x1); // Prints 1

答案 1 :(得分:0)

这对我有用;)

  // uses :: head
  // ----------------------------------------------
     #include <stdio.h>
  // ----------------------------------------------


  // func :: main
  // ----------------------------------------------
     int main()
     {
        void *fooz = "bar";
        char addr[64];

        sprintf(addr, "%p", &fooz);

        // do some stuff with `addr`, or not :)
        puts(addr);

        return 0;
     }
  // ----------------------------------------------

打印出类似的内容:〜&gt; 0x7ffdfb91d698