【问题标题】:Winsock 2 addrinfo *result?Winsock 2 addrinfo *结果?
【发布时间】:2013-12-17 12:49:21
【问题描述】:

我正在通过在线教程(例如cprogramming.com)学习C++,并决定创建一个简单的套接字程序作为我的第一个实际项目。我已经对基本功能进行了实验,并了解了 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,您能解释一下如何以及为什么使用这些指针吗?为什么不直接使用提示对象?

【问题讨论】:

  • 你很勇敢,为你的第一个 C++ 项目做套接字编程:-)
  • @IInspectable 谢谢,这有助于解释指针的用途。

标签: c++ windows winsock msdn winsock2


【解决方案1】:

该行在一行中声明了多个变量。和这个是一样的

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

程序员将指针设置为 NULL,这样如果您不小心取消引用它们,就会抛出异常并找到错误。如果你不初始化它们,它们会指向垃圾,这会导致你的应用程序以不正当的方式崩溃。

【讨论】:

  • 或者,在 C++ 中,它会是addrinfo *result = NULL;,等等。
  • struct addrinfo* 结果 = NULL;结构 addrinfo* ptr = NULL;那会是同样的意思吗? struct addrinfo 提示;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多