簡體   English   中英

在C中,從char *到void *的轉換是否有作用?

[英]In C, does a cast from char* to void* do anything?

請查看下面提到的代碼片段,並告訴我其中的區別?

int main()
{
struct sockaddr_in serv_addr, cli_addr;
/* Initialize socket structure */
    bzero((char *) &serv_addr, sizeof(serv_addr));
}

現在,如果我在不進行類型轉換(char *)情況下做類似的事情,那我也將做同樣的事情嗎? 有人可以澄清嗎?

/* Initialize socket structure */
bzero( &serv_addr, sizeof(serv_addr));

由於第一個參數為void * ,因此只需要使用C ++進行轉換。

在C,這是沒有必要的,為void *加入1正是如此,你會不會需要將其轉換為或從其他對象2點的指針。 (與malloc()和其他處理void * s的函數類似)


  1. 在C89中。
  2. 任何非功能指針。

不需要AnyType*轉換,因為bzero()接受void*作為第一個參數,並且AnyType*可以隱式轉換為void*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM