有人可以解释下面的代码吗?我是 C 的新手,正在努力弄清楚。为什么我们最后有 queueNodeT?
typedef char queueElementT;
typedef struct queueNodeTag {
queueElementT element;
struct queueNodeTag *next;
} queueNodeT;
最佳答案
queueNodeT 是 typedef 语句试图创建的类型的名称。
另一种指定方式是:
struct queueNodeTag {
...
};
typedef struct queueNodeTag queueNodeT;
在 C(相对于 C++)中,“struct queueNodeTag”只是定义了一个名为“queueNodeTag”的结构。在 C++ 中 [你应该知道],这也将定义一个名为“queueNodeTag”的类型
创建指向结构的指针变量时,使用起来稍微短一些:
queueNodeT *my_pointer;
比:
struct queueNodeTag *my_pointer;
尾随的“T”只是一种编码约定,表示它是类型名称而不是变量。你可以使用其他人。我的是:
struct mystructname {
...
};
typedef struct mystructname mystructname_t;
typedef mystructname_t *mystructname_p;
使用 mystructname_p,您可以更改:
struct mystructname *my_pointer;
mystructname_t *my_pointer;
进入:
mystructname_p my_pointer;
“_t”相当常见。 “_p”是我的约定,但是,我相信其他约定将指向类型的指针定义为“p
关于C语言与队列/链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812942/