gpt4 book ai didi

c - 无法修改作为参数传递给函数的指针变量

转载 作者:行者123 更新时间:2023-11-30 21:13:44 25 4
gpt4 key购买 nike

我有这个功能

int rt_exist(struct route_entry* prev_rte) {

prev_rte = rte_head; //This doen't assigns rte_head to prev_rte

return 0;

}

其中rte_head是一个已初始化的structroute_entry*指针变量。但在上面的情况下,“prev_rte”没有分配rte_head的值。

顺便说一句,如果我做这样的事情

int rt_exist(struct route_entry* prev_rte) {

struct route_entry* rte_new;
rte_new = rte_head; //But this can

return 0;

}

以上任务顺利进行。当指针变量作为函数参数传递时,就会出现问题。

这是一个奇怪的问题,细节很少,但有人可以指出我可能的方向或我可能做的错误吗?

最佳答案

考虑一下:

void foo (int j)
{
j = 7;
}

foo (8);

您预计这里会发生什么?函数无法以这种方式更改调用者中的值。

这里应该发生什么:

rt_exist (NULL);

对于 C++,您可以使用引用:

int rt_exist(struct route_entry*& prev_rte) {

prev_rte = rte_head; //This doen't assigns rte_head to prev_rte

return 0;

}

对于 C,您需要传递一个指向您想要更改的内容的指针:

int rt_exist(struct route_entry** prev_rte_ptr) {

*prev_rte_ptr = rte_head; //This doen't assigns rte_head to prev_rte

return 0;

}

关于c - 无法修改作为参数传递给函数的指针变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com