How do you convert void pointer to char pointer in C

前端 未结 2 399
北恋
北恋 2020-12-31 04:10

Ok this has been become sooo confusing to me. I just don\'t know what is wrong with this assignment:

void *pa; void *pb;
char *ptemp; char *ptemp2; 

ptemp =         


        
相关标签:
2条回答
  • 2020-12-31 04:40

    I just tried your code in a module called temp.c. I added a function called f1.

    void *pa; void *pb;
    char *ptemp; char *ptemp2;
    
    f1()
    {
            ptemp = (char *)pa;
            ptemp2 = (char *)pb;
    }
    

    On Linux I entered gcc -c temp.c, and this compiled with no errors or warnings.

    On which OS are you trying this?

    0 讨论(0)
  • 2020-12-31 04:48

    Actually, there must be something wrong with your compiler(or you haven't told the full story). It is perfectly legal to cast a void* to char*. Furthermore, the conversion is implicit in C (unlike C++), that is, the following should compile as well

     char* pChar;
     void* pVoid;
     pChar = (char*)pVoid; //OK in both C and C++
     pChar = pVoid;        //OK in C, convertion is implicit
    
    0 讨论(0)
提交回复
热议问题