我正在通过在线教程学习 C ++ ,例如cprogramming.com的教程,并决定创建一个简单的套接字程序作为我的第一个真实项目。我已经尝试过基本功能,并了解 C ++ 的工作原理。我刚刚在MSDN Winsock2演练中碰到了一些困扰我的东西。
在this page上,从sddrinfo结构声明了一个名为hints的对象:
struct addrinfo *result = NULL,
*ptr = NULL,
hints;
我对此声明的* result和* ptr = null部分感到困惑。由于没有分号,我假设新行是出于可读性目的,这段代码可以像这样编写。
struct addrinfo *result = NULL, *ptr = NULL, hints;
看来我们正在声明指向addrinfo
结构的两个指针,并将它们设置为null以及声明提示对象。有人可以解释将这些设置为NULL
的目的吗?如果有人熟悉winsock你能解释这些指针的使用方法和原因吗?为什么不直接使用提示对象?
答案 0 :(得分:4)
该行在一行中声明多个变量。这和
是一回事struct addrinfo *result = NULL;
struct addrinfo *ptr = NULL;
struct addrinfo hints;
程序员将指针设置为NULL,这样如果你不小心取消引用它们,你就会抛出异常并找到错误。如果你没有初始化它们,它们会指向垃圾,这会导致你的应用程序以狡猾的方式崩溃。