【问题标题】:Pointer in typedef structtypedef 结构中的指针
【发布时间】:2019-11-14 06:27:26
【问题描述】:

我遇到了 C 语言的堆栈教程,我似乎无法理解 *Stack 指针指向的内容,也无法理解 *next 指针。 我只想快速解释一下这两个指针的实际指向。

typedef struct StackElement
    {
        int value;
        struct StackElement *next;
    }StackElement, *Stack;

【问题讨论】:

  • 一般来说,在 typedef 中隐藏指针是一种糟糕的编程习惯。 IE。 *stack 会给人类阅读代码带来问题。\

标签: c


【解决方案1】:

在您给出的示例中都没有指向任何内容。这段代码只是结构类型本身的声明。您可以将 typedef 分解为更简单的形式:

struct StackElement
{
    int value;
    struct StackElement *next;
};

typedef struct StackElement StackElement;
typedef struct StackElement *Stack;

也就是说,有一个结构体本身的声明,其中包含一个字段next,供这个栈的实现代码使用。该字段在填写后将指向另一个 struct StackElement 结构。

typedef 部分只是方便命名 - StackElement 可以用来代替 struct StackElementStack 可以用来代替 struct StackElement *

【讨论】:

  • 现在我明白了!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
相关资源
最近更新 更多