【发布时间】:2021-10-24 02:14:39
【问题描述】:
我无法找到答案。我在 C 中使用哪种方法有关系吗?
int get_int(void *vptr) {
return *(int *)vptr;
}
或
int get_int(void *vptr) {
int i = 0;
memcpy(&i, vptr, sizeof(int));
return i;
}
在我的测试中似乎给出了相同的结果,但在每种情况下都是等效的吗?
【问题讨论】:
-
你能展示你的测试用例吗?
-
这取决于指针指向的位置。如果它指向你知道是对齐的
int类型的变量,那么前一个版本是正确的并且可能更有效。如果不知道指针指向的位置,则不能使用以前的版本。