2014-09-20 124 views
-1

我学习如何在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; 

由于

+0

那么'struct node * head'和struct node'struct node * head'之间的区别呢? – 2014-09-20 21:56:24

+1

'a = a + b'和'a = a + b'有什么区别? – dari 2014-09-20 21:56:28

+0

'struct node * head'和'struct node * head'和'struct node * head'和'struct node * head'没有区别。 – 2014-09-20 21:56:37

回答

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

两者在技术上是相同.....

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

做同样的事情,因为编译器不数空白。

相关问题