我需要获取内存地址和索引位然后我需要输出内存地址的索引。有人可以帮忙吗?
答案 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