指针 - '初始化' :无法转换为' void'到' int'

时间:2014-08-28 14:22:21

标签: c pointers void

#include <stdio.h>
int main()
{
    int a = 10;
    void *p = &a;
    int *ptr = p; // the error occurs here (cannot convert from 'void' to 'int')
    printf("%u",*ptr);
    return 0;
}

错误如上所述。 为什么会发生错误? 是因为初始化是在指针声明为void?

的同时完成的

1 个答案:

答案 0 :(得分:5)

这是有效的C但无效的C ++。 (C ++没有隐式地从void*强制转换:这就是为什么你倾向于在C ++程序员编写的C代码中malloc中看到很多不必要的转换!)

在MSVC上,将文件重命名为扩展名.c,一切都会好:MSVC为该扩展调用C编译器。