C语言中 指针变量值传递的问题

在C语言中主函数调用函数得到一个返回指针然后在将该指针作为形参调用到另一个函数里输出前后指针的地址不变,但输出指针所指向的值在主函数中是对的但是到另外一个函数里值就错了这... 在C语言中 主函数调用函数 得到一个返回指针 然后在将该指针作为形参 调用到另一个函数里 输出前后指针的地址不变 ,但输出指针所指向的值 在主函数中是对的 但是到另外一个函数里 值就错了 这是为什么 展开
 我来答
htqwe22
2014-03-28 · TA获得超过224个赞
知道答主
回答量:32
采纳率:0%
帮助的人:29.2万
展开全部
这要看你返回的指针指向的是不是局部变量,你的问题很可以是返回的是一个局部变量的指针。当那个函数返回时,内存被回收,在主函数里打印时,是因为那块内在没被别的函数覆盖,当你再调用别人函数的时候,那个地址的内容已经改变。这就是你的错误原因。
追问
我在得到那个指针以后就直接 调用到另一个函数了··类似的原因我遇到了好多次了···
追答
可以是编译器的问题,我在GCC下测试是好的,你的程序也没问题。这个我就真帮不了你了。
你用*(Set(&a))来试试。不行的话,我也没办法了。
kaixingui2012
2014-03-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6498万
展开全部
如果返回的指针指向的是局部变量,则其值会因为被调用函数的结束而被系统改变。
即局部变量在函数结束后,会被系统收回再利用,有可能会发生值的变化。
如果不是这样,请提供代码,帮你分析。
追问
因为是新手 写的代码很繁琐 麻烦你了 字数太多 留个其它方式联系吗
追答
发私信给我吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2014-03-28 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3501万
展开全部

不可能,请看实例。

/*

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;
}
追问

我用%d输出 得到这个

应该代表同一个地址吧 在用%lf(两个都是双精度指针)

得到这个

追答
你花点时间,把我上传的代码中各个函数间的关系搞明白,重要的是参数的传递方式要搞清楚,然后与你的代码的相关部分进行比较,你的分析会告诉你结果的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式