有啥区别:在同类型的结构体中用关键字struct创建结构体指针

Posted

技术标签:

【中文标题】有啥区别:在同类型的结构体中用关键字struct创建结构体指针【英文标题】:What's the difference: Creating structure pointer inside a structure of the same type with the keyword struct有什么区别:在同类型的结构体中用关键字struct创建结构体指针 【发布时间】:2017-02-05 07:59:31 【问题描述】:

来自这里的 C++ 背景。我的一门课程要求我为我从未接触过的课程写 C。这两个声明之间有什么区别?为什么要包含 struct 关键字?有不同的含义吗?它们在 C++ 和 C 中有不同的含义吗?

struct A 
    int dataA;
    A* nextA;
;

struct B 
    int dataB;
    struct B* nextB;
;

下面的 cmets 说第一个在 C 中是无效的。但是,我用 gcc 编译得很好。

编辑:我正在用 gcc 编译一个 .cpp 文件。我真是个菜鸟哈哈。

解决方案:第二个对于 C 是必需的,而第一个仅在 C++ 中有效。

【问题讨论】:

第一个在C中无效 嗯.. 用 gcc 编译就好了。 嗯 ... nops ideone.com/A24jsZ :) gcc 编译 C 和 C++ 代码。在您的情况下,您的文件名 test.cpp 表示 C++ 文件。 test.cpp 表示 C++。对 C 使用 test.c 【参考方案1】:
struct B 
    int dataB;
    B* nextB;
;

一样
struct B 
    int dataB;
    struct B* nextB;
;

在 C++ 中,但不是在 C 中。使用 C 时,您必须使用第二种形式。第一种形式是不合法的 C.

【讨论】:

以上是关于有啥区别:在同类型的结构体中用关键字struct创建结构体指针的主要内容,如果未能解决你的问题,请参考以下文章

C语言结构体中struct和typedef struct有啥区别?

结构体

C语言,结构体

CC++中的 struct 关键字详解

没有类,C语言有结构体,那么Go的结构体有啥特别之处?

c++的类和结构体是啥关系