2013-12-16 70 views
0

我正在學習C++通過在線教程,如在cprogramming.com,並已決定創建一個簡單的套接字程序作爲我的第一個真正的項目。我已經嘗試了基本功能,並獲得瞭如何工作的要點。我剛剛遇到MSDN Winsock2中的一些問題,讓我感到困惑。Winsock 2 addrinfo *結果?

this page,對象命名提示從sddrinfo結構中聲明:

struct addrinfo *result = NULL, 
       *ptr = NULL, 
       hints; 

我感到困惑的*結果和* PTR =本聲明的空部分。由於沒有分號我假設換行是出於可讀性的目的,這段代碼可以這樣寫。

struct addrinfo *result = NULL, *ptr = NULL, hints; 

看來,我們宣佈兩個指針指向的addrinfo結構和設置他們與聲明暗示對象空一起。有人可以解釋將這些設置爲NULL的目的嗎?如果有人熟悉winsock,你能解釋這些指針是如何以及爲什麼使用的?爲什麼不使用提示對象?

+3

['getaddrinfo'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms738520.aspx)。 – IInspectable

+1

你很勇敢,爲你的第一個C++項目做套接字編程:-) – Cameron

+0

@IInspectable謝謝,這有助於解釋指針的用途。 – Nick

回答

3

該行在一行中聲明瞭多個變量。這是同樣的事情,因爲這

struct addrinfo *result = NULL; 
struct addrinfo *ptr = NULL; 
struct addrinfo hints; 

程序員設置指針爲NULL,所以如果你不小心取消引用它們,你會拋出一個異常,並找到自己的錯誤。如果你沒有初始化它們,他們會指向垃圾,這可能會導致你的應用程序以不正當的方式崩潰。

+0

或者,在C++中,它將是'addrinfo * result = NULL;'等。 – IInspectable

+0

struct addrinfo * result = NULL; struct addrinfo * ptr = NULL; 會有相同的意思嗎? struct addrinfo提示; –