我有这个功能
int rt_exist(struct route_entry* prev_rte) {
prev_rte = rte_head; //This doen't assigns rte_head to prev_rte
return 0;
}
where 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)