什么是void函数(stuct * s)与void函数(stuct s)之间的区别是什么?

时间:2017-12-08 08:55:35

标签: c function pointers linked-list structure

我有这个学校的功课要做,因为我被要求做的功能,我感到很困惑。它与我单链表的风格不同。

我单独链接列表如下:

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

typedef struct structList{
    int count;
    struct structNode *head, *tail;
} list;

void insertFront(list *L, int x);
void insertRear(list *L, int x);
void insertAt(list *L, int x, int p);
void deleteFront(list *L);
void deleteRear(list *L);
void deleteAt(list *L, int p);
void displayAll(list *L);

所有参数都在接收指针但我的作业需要我这样做我的代码:

typedef struct node *nodePtr;

struct node {
    int item;
    nodePtr next;
};

typedef nodePtr Statistician;

Statistician newStatistician();
  //allocates memory to the structure. Dynamic allocation
void destroyStatistician(Statistician *s);
  //destroys statistician
void add(Statistician s, int x);
  //Adds data to the rear
void remove(Statistician s, int x);
 //removes data
void displayData(Statistician s);

所以我很困惑,因为我过去常常接收指针而家庭作业风格不同。

我认为具有接收指针的那个是通过引用调用,这就是为什么我在本地编辑的内容可以全局编辑...

还有我的结构实现与我必须做的不同?

1 个答案:

答案 0 :(得分:3)

统计学家是一个指针。它的typedef为nodePtr,而nodePtr又被定义为node *。所以传递统计学家实际上是在传递一个节点*。

从可用性的角度来看,使指针看起来像非指针是否明智是一个不同的问题。