C语言中 指针变量值传递的问题
在C语言中主函数调用函数得到一个返回指针然后在将该指针作为形参调用到另一个函数里输出前后指针的地址不变,但输出指针所指向的值在主函数中是对的但是到另外一个函数里值就错了这...
在C语言中 主函数调用函数 得到一个返回指针 然后在将该指针作为形参 调用到另一个函数里 输出前后指针的地址不变 ,但输出指针所指向的值 在主函数中是对的 但是到另外一个函数里 值就错了 这是为什么
展开
3个回答
展开全部
这要看你返回的指针指向的是不是局部变量,你的问题很可以是返回的是一个局部变量的指针。当那个函数返回时,内存被回收,在主函数里打印时,是因为那块内在没被别的函数覆盖,当你再调用别人函数的时候,那个地址的内容已经改变。这就是你的错误原因。
追问
我在得到那个指针以后就直接 调用到另一个函数了··类似的原因我遇到了好多次了···
追答
可以是编译器的问题,我在GCC下测试是好的,你的程序也没问题。这个我就真帮不了你了。
你用*(Set(&a))来试试。不行的话,我也没办法了。
展开全部
如果返回的指针指向的是局部变量,则其值会因为被调用函数的结束而被系统改变。
即局部变量在函数结束后,会被系统收回再利用,有可能会发生值的变化。
如果不是这样,请提供代码,帮你分析。
即局部变量在函数结束后,会被系统收回再利用,有可能会发生值的变化。
如果不是这样,请提供代码,帮你分析。
追问
因为是新手 写的代码很繁琐 麻烦你了 字数太多 留个其它方式联系吗
追答
发私信给我吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可能,请看实例。
/*
main() : 5
Show() : 5
Press any key to continue
*/
#include <stdio.h>
int *Set(int *p) {
*p = 5;
return p;
};
void Show(int *p) {
printf("Show() : %d\n",*p);
}
int main() {
int a;
printf("main() : %d\n",*Set(&a));
Show(&a);
return 0;
}
追答
你花点时间,把我上传的代码中各个函数间的关系搞明白,重要的是参数的传递方式要搞清楚,然后与你的代码的相关部分进行比较,你的分析会告诉你结果的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询