结构功能中的“ *”是什么?

时间:2019-11-18 08:01:37

标签: c struct syntax

struct Node *addToEmpty(struct Node *last, int data) 
{ 
  // This function is only for empty list 
  if (last != NULL) 
    return last; 

  // Creating a node dynamically. 
  struct Node *temp =  
       (struct Node*)malloc(sizeof(struct Node)); 

  // Assigning the data. 
  temp -> data = data; 
  last = temp; 

  // Creating the link. 
  last -> next = last; 

  return last; 
} 

struct Node *addBegin(struct Node *last, int data) 
{ 
  if (last == NULL) 
      return addToEmpty(last, data); 

  struct Node *temp =  
        (struct Node *)malloc(sizeof(struct Node)); 

  temp -> data = data; 
  temp -> next = last -> next; 
  last -> next = temp; 

  return last; 
} 

我想知道为什么使用“ * addToEmpty”而不是“ addToEmpty”。

“ *”在结构中是什么意思?

我知道这是基本问题。但我找不到答案。

如果您回答我的问题,今天我会过得很好

P.S。这是c ++代码。

2 个答案:

答案 0 :(得分:5)

这是C(++)[Pun意向]的A和B。

在此函数中,您将返回指向节点struct的指针...

您要我们教您指针的基础知识。看看https://en.cppreference.com/w/cpp/language/pointer或Google“在C ++中使用指针”,将对所有内容进行说明。

答案 1 :(得分:3)

只需更改阅读方式:

  • struct Node意味着我们返回Node类型的结构。在c ++中,struct关键字不是必需的。

  • 现在*属于返回类型,而不属于函数名称。 struct Node *是指向类型Node

  • 的结构的指针
  • addToEmpty是函数名称。

如果您更清楚,也可以写Node* addToEmpty。这只是个人喜好,更清楚地说明addToEmpty返回Node*(指向Node的指针)