我不明白这行代码的作用是什么:
((struct Example*) 0x10000)
我写了一个测试程序:
#include <stdio.h>
struct Elf{
int bla;
char bla2;
};
int main(){
struct Elf *elfPtr;
printf("Before casting: %p\n", elfPtr);
elfPtr = ((struct Elf *)0x10000);
printf("After casting: %p\n", elfPtr);
return 0;
}
输出结果为:
转换前:0xb776dff4
转换后:0x10000
这行代码只做了这个事情吗?
elfPtr = 0x10000
%p
正确的强制类型转换应该是void*
。因此,printf("After casting: %p\n", elfPtr);
应该写成printf("After casting: %p\n", (void*)elfPtr);
才是正确的。 - Grijesh Chauhanprintf()
调用了未定义的行为,因为elfPtr
没有被初始化。 - alk