| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3368 人关注过本帖
标题:关于函数返回地址
只看楼主 加入收藏
ping燕s
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:40
专家分:33
注 册:2009-9-22
结帖率:71.43%
收藏
已结贴  问题点数:5 回复次数:7 
关于函数返回地址
   int *function(void)
{
int a[2] = {0,1};
return a;
};


为什么这样的函数被调用后,不会得到完整的数组元素值???
望讲解详细点。。。
先谢了~~~
搜索更多相关主题的帖子: 地址 函数 
2009-10-26 14:11
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
收藏
得分:1 
因为你是在函数中定义的数组,这个数组a[2]只是一个局部变量,局部变量在函数返回以后就自动释放了。可以这样定义这个数组static int a[2] = {0,1};你可以试一试。
2009-10-26 14:36
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
程序代码:
int *function(void) 
{ 
int a[2] = {0,1}; 
return a; 
}; 
main() 
{ 
    printf("%d",*function()); 
    getch(); 
} 

我可好玩啦...不信你玩玩^_^
2009-10-26 14:41
liu1987lang
Rank: 2
等 级:论坛游民
帖 子:42
专家分:44
注 册:2007-4-22
收藏
得分:0 
return a是返回a[2]这个数组的首地址,即a[0]的地址,如果你想得到a[1]的地址则需要在返回的地址+1则是a[1]的地址。不知道是否回答了你的问题,呵呵!
2009-10-26 14:42
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:2 
  
int *function()  
{  
int a[2] = {0,1};  
return a;  
}  
void main()  
{  
    int *p,b[2];  
    p=function();  
    b[0]=*p;  
    b[1]=*++p;  
     printf("%d %d",b[0],b[1]);  
/*    printf("%d %d %d",*p,*++p,*p);  */  
    getch();  
}  
用这两种方法都可以得到数组a中的元素的值。
至于分开就不行了。(用两个printf()来输出指针p值想的数组的值。)
就像用printf("%d",*p++);
printf("%d",*p);
输出错误!

离恨恰如春草,更行更远还生。
2009-10-26 14:45
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
要考虑到变量生存期。

努力—前进—变老—退休—入土
2009-10-26 15:17
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
同样建议在子函数里加static
2009-10-26 17:43
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:2 
在你的这个程序里出现的问题相信大多数人都会犯这样的错误,包括一些指点你程序的人都会犯!
这是一个有关内存释放的问题,当你所定义的这个函数结束的时候,系统会自动释放改变量占有的
内存空间,占有你本来想返回去的是一个数组的指针,可是因为内存的释放导致了a没有了一个明确
的指向,所以也就不能够实现你想要的目的了!
  
这种问题我们有很多解决的办法,我们可以定义一个static的整型
数组,static a[2]={0,1};这样就可以了!我们也可以定义一个全局的整型数组,这样也可以实现!

愿用余生致力编程
2009-10-26 21:50
快速回复:关于函数返回地址
数据加载中...
 
   



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

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