| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:关于指针的一个问题?
只看楼主 加入收藏
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:6 
关于指针的一个问题?
#include<stdio.h>
int *fun( void )
{
int a=100;
return &a;
}
int *fun1( void )
{
int b=200;
return &b;
}
int main()
{
int* p;
int* p1;
int aa, bb;

p=fun();
p1=fun1();

aa=*p;
bb=*p1;
printf("%d,%d\n",aa,bb);
}
为什么他们输出都是200?
搜索更多相关主题的帖子: include return 
2011-10-12 21:10
ileelsai
Rank: 5Rank: 5
等 级:职业侠客
帖 子:87
专家分:303
注 册:2011-9-25
收藏
得分:5 
蛋疼。。。。你就这么用指针
两次分配的都是同一个地址。。。。。。。。。。。。。。。。。。。。。。。
2011-10-12 21:21
NeXT__00
Rank: 2
等 级:论坛游民
帖 子:51
专家分:98
注 册:2011-9-5
收藏
得分:5 
因为fun()和fun1()函数中的a,b局部变量的地址相同。(调用有先后,所以可以)
2011-10-12 21:22
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
回复 楼主 maxam0128
代码是错的,打印200跟操作系统或者编译器有关

总有那身价贱的人给作业贴回复完整的代码
2011-10-12 21:28
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
收藏
得分:0 
回复 2楼 ileelsai
哦,明白了...3q
2011-10-12 22:02
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
int *fun( void )
{
int a=100;
return &a;
}

这个函数内部定义了变量a,a在函数的栈上,函数的返回值指向的就是栈上的a的地址,但是函数返回后函数的栈就被撤销了,返回指针指向的就是非法的地址,所以会出错,严重的错误。

总有那身价贱的人给作业贴回复完整的代码
2011-10-12 22:16
劣质数轴
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:89
专家分:163
注 册:2010-11-19
收藏
得分:5 
函数不应返回指向局部变量的指针
如果要返回指向局部变量,要么用static定义静态变量,要么就是用malloc。
2011-10-15 02:04
快速回复:关于指针的一个问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015846 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved