C Pop函数解释

C Pop函数解释,c,C,我有一些我试图理解的类中的push和pop代码,并且有一个关于pop函数的问题 这是节点结构: struct NODE { int dataitem; struct NODE *link; }; 这是pop函数: struct NODE* PopD(struct NODE *SP, int *Data) { struct NODE *temp; temp = SP; *Data = temp->dataitem; temp = temp-

我有一些我试图理解的类中的push和pop代码,并且有一个关于pop函数的问题

这是节点结构:

struct NODE
{
    int dataitem;
    struct NODE *link;
};
这是pop函数:

struct NODE* PopD(struct NODE *SP, int *Data)
{
    struct NODE *temp;

    temp = SP;
    *Data = temp->dataitem;
    temp = temp->link;
    free(SP);

    return temp;
}
所以我的问题是这行做什么:
*Data=temp->dataitem


当方法后面没有使用
dataitem
值时,为什么它会将
dataitem
值带入
Data
中?

当您弹出堆栈顶部项时,堆栈顶部包含的值会通过输出参数返回


它可能对调用函数有用。

调用此函数的人将传入一个指向整数的指针-期望该整数被堆栈上最顶端的整数填充

i、 e


数据通过
data
参数返回。返回值用于更新堆栈指针。该代码大概是这样使用的:

struct NODE *stack = NULL;

// push some items
// ...

// pop one
int data;
stack = PopD(stack, &data);
printf("%d\n", data);

它将链表顶部节点数据值复制到
data
指针参数中保存的地址。另外,当您传递空列表(即SP中的
NULL
值)或空数据目标(
data
中的
NULL
值)时,它还会调用未定义的行为。看看你能不能认出@WhozCraig-hehe,很好!
struct NODE *stack = NULL;

// push some items
// ...

// pop one
int data;
stack = PopD(stack, &data);
printf("%d\n", data);