2013-09-28 40 views
0

所以,我讀Beej指南網絡編程,和他使用此功能:帶*前面的函數聲明和void返回值?

void *get_in_addr(struct sockaddr *sa) 
{ 
    if (sa->sa_family == AF_INET) { 
    return &(((struct sockaddr_in*)sa)->sin_addr); 
} 

所以,我得到了什麼一般做它。我無法理解的是函數聲明中的*正在做什麼。此外,這個函數似乎正在返回一個內存位置,但它的空白。這裏發生了什麼?

+3

它有幫助,如果我這樣寫:void * get_in_addr(struct sockaddr * sa)' –

+2

這有答案:http://stackoverflow.com/questions/4334831/what-is-a-void-指針和什麼是空指針 – shunyo

+0

不好笑,但網絡編程將是非常艱難的,沒有對C的基本理解。 –

回答

4

'*'表示該函數返回一個void *。這是一個可以轉換爲任何其他指針的指針。

+0

非常感謝。正是我在找什麼。 – Nick