我已经得到了一个将构成我的堆栈的节点的结构,但是我很难理解它。

    struct stackNode
{
  char data;
  struct stackNode *nextPtr;
};

typedef struct stackNode StackNode;
typedef StackNode *StackNodePtr;

我知道我有一个名为stacknode的结构,它被重命名为stacknode(或者第二个类型除了名称之外都是相同的?),它有两种类型,一个char和一个指向stacknode的指针。
我不知道最后一行是什么意思,有人能给我解释一下吗?我认为这意味着有一个新的类型,它是一个指向stacknode的指针,叫做stacknodeptr。是这样吗?

最佳答案

是的,当你使用StackNodePtr的时候,你实际上是在使用StackNode*,而这又等于struct stackNode*。间距和星号位置显然会导致一些混淆。我个人会把它写成typedef StackNode* StackNodePtr;以便更清楚地知道什么会被打印成什么。
这三条线是相等的:

StackNodePtr myPointer;
StackNode *myPointer;
struct stackNode *myPointer;

typedef struct stackNode StackNode的原因通常是为了避免每次使用它时都要编写struct

关于c - 在C结构中为节点创建堆栈,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16452770/

10-10 05:43