簡體   English   中英

我怎樣才能正確地將 void* 轉換為 int?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM