C *pe=pn->;的效果是什么;进入

C *pe=pn->;的效果是什么;进入,c,C,我只需要明白这句话是什么意思: *pe=pn->Entry; 为什么我不能跳过它。它如何影响发球操作 void Serve(Entrytype *pe,Queue *pq){ QueueNode *pn; *pe=pn->Entry; pn=pq->front; pq->front=pn->next; free(pn); } 它不影响函数本身,但本质上它充当返回值,在指针表示的函数之外设置一个值以供以后使用。因此,如果省略

我只需要明白这句话是什么意思:

*pe=pn->Entry;
为什么我不能跳过它。它如何影响发球操作

void Serve(Entrytype *pe,Queue *pq){
    QueueNode *pn;
    *pe=pn->Entry;
    pn=pq->front;
    pq->front=pn->next;
    free(pn);
}

它不影响函数本身,但本质上它充当返回值,在指针表示的函数之外设置一个值以供以后使用。因此,如果省略该行,函数仍然可以工作,但函数后面的内容可能无法工作。

这是一种常见的C技术,允许可变参数。典型案例如下所示:

void mutate(int* a) {
  *a = 5;
}
void mutate(int a) {
  a = 5;
}
调用时的位置:

int main() {
  int a = 0;
  mutate(&a);
  printf("a=%d\n", a);

  return 0;
}
现在将显示
a
已被更改

如果这是一个非指针参数,如下所示:

void mutate(int* a) {
  *a = 5;
}
void mutate(int a) {
  a = 5;
}

然后只更改局部变量
a
,它对调用方的变量没有影响。

提示:如果要更改调用方的变量
pe
,就是这样做的。
*pe=pn->Entry
pn->Entry
的值分配给
pe
所寻址的对象。这就是
=
所做的。此代码是错误的,因为它取消了对未初始化指针的引用
pn
。取消对未初始化指针的引用是未定义的行为。