C++ c++;使用结构指针初始化结构

C++ c++;使用结构指针初始化结构,c++,struct,C++,Struct,当我阅读C++初级读本时,我偶然发现了这段代码 struct destination; struct connection; connection connect(destination*); 连接连接什么(目的地*)行吗?为什么即使传递了结构名,它也能编译得很好呢?您不应该初始化结构到变量,然后像这样传递吗 struct destination; struct connection; destination dest; connection connect(dest); 连接连接什么(目的

当我阅读C++初级读本时,我偶然发现了这段代码

struct destination;
struct connection;
connection connect(destination*);
连接连接什么(目的地*)行吗?为什么即使传递了结构名,它也能编译得很好呢?您不应该初始化
结构
到变量,然后像这样传递吗

struct destination;
struct connection;
destination dest;
connection connect(dest);
连接连接什么(目的地*)行吗

它声明了一个名为
connect
的函数,该函数接受
目标*
并返回
连接

在这个声明中,没有为参数提供名称(虽然对读取器没有特别帮助,但它是有效的)。假设在定义函数时会提供,如下所示:

connection connect(destination* ptr)
{
   connection conn;
   // do something with conn and ptr
   return conn;
};
本书代码片段的其余部分(您没有引用的部分)显示了从另一个名为
f
的函数中调用函数
connect

函数声明在前面的六章中介绍过

为什么即使它传递了结构名,它也能编译得很好

因为这就是你在函数声明中应该做的

您不应该初始化
结构
到变量,然后像这样传递吗

struct destination;
struct connection;
destination dest;
connection connect(dest);

没有。

好的,这是有道理的。我不知道它是创建一个名为connect的连接结构,还是一个返回connection@qwertyz:唯一能真正说明的方法就是你(几乎!)是怎么做的:类型
destination*
在哪里,这只能是一个声明。这样调用函数(或初始化对象)是无效的。