【问题标题】:Function declarations with * in front and void returning values? [duplicate]前面带 * 的函数声明和 void 返回值? [复制]
【发布时间】:2013-10-04 10:12:57
【问题描述】:

所以,我正在阅读 Beej 的网络编程指南,他使用了这个功能:

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

所以,我知道它在做什么。我无法理解的是函数声明中的 * 到底在做什么。此外,这个函数似乎正在返回一个内存位置,但它是无效的。这是怎么回事?

【问题讨论】:

  • 这样写有帮助吗:void* get_in_addr(struct sockaddr *sa)
  • 不好笑,但是如果没有 C 的基本了解,网络编程将会非常困难。
  • @PaulGriffiths 我听到了。我实际上对 C/C++ 有相当好的理解,只是我以前从未遇到过这种语法。我知道我的知识有漏洞,但是,嘿,我在学校。现在是填补空白的时候了,而不是说“哦,我不知道,所以我什至不应该尝试”。非常感谢您的意见。
  • @Nick:好的。指针对于 C 语言来说非常非常重要。祝你学业顺利。

标签: c++ c function-pointers


【解决方案1】:

'*' 表示函数返回一个 void *。这是一个可以转换为任何其他指针的指针。

【讨论】:

  • 非常感谢。正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2016-08-28
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多