gpt4 book ai didi

C - 将真正的 int 值分配给 void 指针而不是地址/指针值?

转载 作者:行者123 更新时间:2023-11-30 15:10:07 25 4
gpt4 key购买 nike

我必须处理通用链表,因此我无法将数据格式从 void * 转换为 int

微型版本:

int main(int argc, char **argv) {
void *data;
int i = 100;
*((int*)data) = i;
printf("%d", (int)data);
return 0;
}

继续打印地址。同样,data = &i 也返回一个地址。 data = i 只会导致错误。我已经尝试了所有我能做的,但就是无法将值 i 插入到 data 中。

最佳答案

您需要首先使data指向有效的内存地址:

int main(int argc, char **argv) {
void *data = malloc(sizeof (int));
int i = 100;
*((int*)data) = i;
printf("%d", *((int*)data));
return 0;
}

如果没有 malloc(),将调用双重未定义行为(访问未初始化的对象&&将数据写入随机地址)。

此外,将 printf() 语句中的 (int)data 更改为 *((int*)data)。如果sizeof (int) > sizeof (void *)data在转换时将被截断。

关于C - 将真正的 int 值分配给 void 指针而不是地址/指针值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36367801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com