您的位置:首页 > 编程语言 > C语言/C++

C和C++中void*的区别

2016-04-11 14:31 190 查看


          C和C++中void*的区别

                   本文翻译自:http://www.geeksforgeeks.org/g-fact-12-2/
                        translated By qianghaohao

              正文:

                      C语言中在没有强转的情况下,允许void*赋给其他任何类型的指针,但是在C++
   中是不允许的。这个用法经常在C代码中使用malloc分配内存时出现。比如,下列用法在C
   中是对的,但是在C++中会报错:
void* ptr;
int *i = ptr; /* Implicit conversion from void* to int* */
     或者类似的:
int *j = malloc(sizeof(int) * 5); /* Implicit conversion from void* to int* */
   为了使得代码在C和C++中都通过编译,必须使用强转: 
void* ptr;
int *i = (int *) ptr;
int *j = (int *) malloc(sizeof(int) * 5);

         源代码:

                http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息