[英]how can i cast void* to int correctly?
我在學習 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;
}
編譯時,output“警告:從 int 分配給 void* 使指針來自 integer 沒有強制轉換”我該如何解決這個問題?
這將解決它。 data
是一個指針,因此您需要將其分配給變量的地址:
base->data = &value;
printf("%d", *(int*)base->data);
如果您真的是認真的,但只是想擺脫警告,請使用以下命令:
base->data = (void*)value;
但如果你這樣做,這是一個好兆頭,你做錯了什么。
除此之外,不要投 malloc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.