我有兴趣在 ubuntu 上使用 netbeans 在 C.Im 中读取一个字节的内存,下面是我只读取一个字节的代码(不是 a 的全部值)。但屏幕上什么也没有打印出来。
main()
{
int a[1]={3};
//printf(%d",a[0]); //line 2
printf("\x07",a[0]); //line 3
}
Run Code Online (Sandbox Code Playgroud)
在我的想法中,带有标签 a 的地址中的内存由以下部分组成:
第 2 行中的 printf() 语句表示转到地址 0x???4 和:
第 3 行中的 printf() 语句使用\ (而不是 %)和从 0 到 7(1 个字节)的位。所以它表明,去地址 0x0004 和:
所以代码应该打印出 0x0004 中的第一个字节是 03。但它没有。任何线索?
提前致谢
请不要只是更正我的语法。您认为我关于 printf 中的格式化程序的假设是否正确?
使用指针来寻址各个字节a并更改printf以使用%x格式说明符,例如:
int main(void)
{
int a = 3;
unsigned char *p = (unsigned char *)&a;
int i;
printf("a =");
for (i = 0; i < sizeof(a); ++i)
{
printf(" %02x", p[i]);
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在具有 32 位整数的小端机器上,这应该产生以下输出:
a = 03 00 00 00
Run Code Online (Sandbox Code Playgroud)