我是C编程的初学者,我正在研究链接列表。 我想创建一个链接列表,它会按正确的顺序显示这些字母。该程序使用户能够按字母顺序在列表中插入字符或从列表中删除字符。 所以,我以一个例子来说明一点,但有些东西我无法理解。typedef指针在C
这里是代码的第一部分:
#include <stdio.h>
#include <stdlib.h>
struct listNode {
char data;
struct listNode *nextPtr;
};
typedef struct listNode ListNode;
typedef ListNode *ListNodePtr;
那部分之后,程序与函数原型开始。 我知道typedef
在底部第二行的用法。 但我不知道的是,它包含代码的最后一行:
typedef ListNode *ListNodePtr;
这是什么意思?
请参阅[对typedef指针是否一个好主意?](http://stackoverflow.com/questions/750178/is-it-a-good-idea-to-typedef-pointers)提供一个强有力的建议最后一行是不利的。至少在你的情况下,它明显包含名称中的'Ptr',但'*'与Ptr'一样清晰。 –
我一直在做什么对于后缀/前缀来说,使用'Ptr'或类似名称的类型名称会更好,而不是将'*'放在typename前面。后者更加明确,并且会更少地污染名称空间,如果您因此而使用它(如果不是这样,那么对于什么来说它会有好处?)。 – Olaf
@Olaf我想我们在几天前有过类似的讨论,有*一个*可能很好用于'typedef'指针,也就是说当客户端代码获取它作为*不透明句柄*并且真的不应该知道它*是一个指针。 (例如,因为它可以在更高的版本中更改为“int”,而不会在API中引入重大更改)当然,这是一个极端情况,当然,您不会**使用“Ptr”后缀... –