C关于返回局部变量指针的问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 21:16:38
glist_t
glist_reverse(glist_t g)
{
gnode_t *gn, *nextgn;
gnode_t *rev;

rev = NULL;
for (gn = g; gn; gn = nextgn) {
nextgn = gn->next;

gn->next = rev;
rev = gn;
}

return rev;
}像这样一段代码的话,最后一句return rey ,rey是局部变量的指针吧?那返回一个局部变量的指针是不是错的?这段代码最后一句是不是不对?非常感谢!

有返回值的话,那么在主函数或者其他调用函数肯定有这样的表示
...=glist_reverse(glist_t g);
所以你的返回的是一个指针值,然后把这个值赋值给等号左边的那个量
而自定义函数里的所有东西自动释放掉,这跟局部变量没有冲突的。
楼主细想一下是不是····

代码里rey指向的是函数参数g,返回参数没有问题