c - 我怎样才能正确地将 void* 转换为 int?
问题描述
当我学习C时,我发现这个程序:
#include<stdio.h>
struct Base
{
void* data;
}
int main()
{
struct Base* base = (struct Base*)malloc(sizeof(struct Base));
if(!base) return -1;
int value = 90;
base->data = value;
printf("%d", base->data);
return 0;
}
编译时,输出“警告:从 int 分配给 void* 使指针从整数而不进行强制转换”我该如何解决这个问题?
解决方案
这将解决它。data
是一个指针,所以你需要把它赋给变量的地址:
base->data = &value;
printf("%d", *(int*)base->data);
如果您真的是认真的,但只是想摆脱警告,请使用以下命令:
base->data = (void*)value;
但如果你这样做,这是一个好兆头,你做错了什么。
除此之外,不要施放 malloc
推荐阅读
- machine-learning - 从 NN 模型中提取的权重大小变得高于模型
- javascript - 根据 JavaScript HTML 和 CSS 中选中的单选按钮显示特定的 div
- angular - 如何在 Angular 4 中创建多个路由器
- php - CakePHP saveMany 内部服务器错误 500
- react-native - React-native 在入门项目中不存在捆绑 URL
- r - Shiny switchInput:在不同的计算机上呈现不同的效果
- self-join - 自加入多个帐户相同的ID
- c# - 如何获得访问权限以检查网络路径是否存在
- netlogo - 如果加载了扩展,如何从终端启动 NetLogo
- jquery - 光滑的轮播,两排 3 但只滚动最后 2 个元素,而不是一次全部 6 个