C Pop函数解释
我有一些我试图理解的类中的push和pop代码,并且有一个关于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-
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);