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
。取消对未初始化指针的引用是未定义的行为。