相关疑难解决方法(0)

void指针:C和C++之间的区别

我试图理解C和C++之间关于void指针的区别.以下编译用C而不是C++编译(所有编译都用gcc/g ++ -ansi -pedantic -Wall完成):

int* p = malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

因为malloc返回void*,C++不允许分配,int*而C允许.

但是,这里:

void foo(void* vptr)
{
}

int main()
{
    int* p = (int*) malloc(sizeof(int));
    foo(p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++和C都编译它没有抱怨.为什么?

K&R2说:

任何指向对象的指针都可以转换为类型void *而不会丢失信息.如果结果转换回原始指针类型,则恢复原始指针.

这很好地总结void*了C中的转换.C++标准规定了什么?

c c++ void-pointers

18
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1

void-pointers ×1