天天看點

C和C++中void*的差別

          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

繼續閱讀