数据类型* <变量名称=“”>与数据类型* <变量名称=“”> </变量> </变量>之间的差异

时间:2014-09-20 21:53:04

标签: c pointers struct linked-list

我研究如何在C中创建链接列表。看看this article

首先,他使用以下代码创建结构;

struct node 
{
  int data;
  struct node *next;
};

很清楚* next是节点类型的指针变量。

但是当他前进时,他会这样做;

struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;

现在我在理解他想要做的事情时遇到了问题;是他创建名称,头,第二和第三的节点?或者他只是试图创建类型节点的指针变量?

因为他把它们等于NULL;我假设他正在尝试创建指针变量。但是他不能这样做吗?

struct node *head = NULL;
struct node *second = NULL;
struct node *third = NULL;

由于

2 个答案:

答案 0 :(得分:4)

在C中,*之前或之后的空格毫无意义。所以:

struct node *head;
struct node * head;
struct node* head;
struct node*head;

都完全一样。 C并不关心这个空白。

当您遇到麻烦时,您会声明多个项目:

struct node *head, tail; // tail is not a pointer!
struct node *head, *tail; // both are pointers now
struct node * head, * tail; // both are still pointers; whitespace doesn't matter

答案 1 :(得分:1)

两者在技术上都是一样的.....

struct node *third = NULL;
struct node* third = NULL;

做同样的事情,因为编译器不计算空格。