|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于函数返回地址
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
3368
人关注过本帖
标题:
关于函数返回地址
只看楼主
加入收藏
ping燕s
来 自:江西
等 级:
论坛游民
帖 子:40
专家分:33
注 册:2009-9-22
结帖率:
71.43%
楼主
收藏
已结贴
√
问题点数:5 回复次数:7
关于函数返回地址
int *function(void)
{
int a[2] = {0,1};
return a;
};
为什么这样的函数被调用后,不会得到完整的数组元素值???
望讲解详细点。。。
先谢了~~~
搜索更多相关主题的帖子:
地址
函数
2009-10-26 14:11
举报帖子
使用道具
赠送鲜花
蓝色药剂
等 级:
业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
第
2
楼
收藏
得分:1
因为你是在函数中定义的数组,这个数组a[2]只是一个局部变量,局部变量在函数返回以后就自动释放了。可以这样定义这个数组static int a[2] = {0,1};你可以试一试。
2009-10-26 14:36
举报帖子
使用道具
赠送鲜花
pgy
来 自:C
等 级:
小飞侠
威 望:
8
帖 子:1248
专家分:2329
注 册:2009-9-23
第
3
楼
收藏
得分:0
程序代码:
int *function(void) { int a[2] = {0,1}; return a; }; main() { printf("%d",*function()); getch(); }
我可好玩啦...不信你玩玩^_^
2009-10-26 14:41
举报帖子
使用道具
赠送鲜花
liu1987lang
等 级:
论坛游民
帖 子:42
专家分:44
注 册:2007-4-22
第
4
楼
收藏
得分:0
return a是返回a[2]这个数组的首地址,即a[0]的地址,如果你想得到a[1]的地址则需要在返回的地址+1则是a[1]的地址。不知道是否回答了你的问题,呵呵!
2009-10-26 14:42
举报帖子
使用道具
赠送鲜花
玩出来的代码
来 自:河南新乡
等 级:
贵宾
威 望:
11
帖 子:742
专家分:2989
注 册:2009-10-12
第
5
楼
收藏
得分: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
来 自:毅华
等 级:
火箭侠
威 望:
8
帖 子:720
专家分:3300
注 册:2009-8-10
第
6
楼
收藏
得分:0
要考虑到变量生存期。
努力—前进—变老—退休—入土
2009-10-26 15:17
举报帖子
使用道具
赠送鲜花
m456m654
等 级:
小飞侠
威 望:
3
帖 子:783
专家分:2806
注 册:2009-9-17
第
7
楼
收藏
得分:0
同样建议在子函数里加static
2009-10-26 17:43
举报帖子
使用道具
赠送鲜花
我菜119
等 级:
青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
第
8
楼
收藏
得分:2
在你的这个程序里出现的问题相信大多数人都会犯这样的错误,包括一些指点你程序的人都会犯!
这是一个有关内存释放的问题,当你所定义的这个函数结束的时候,系统会自动释放改变量占有的
内存空间,占有你本来想返回去的是一个数组的指针,可是因为内存的释放导致了a没有了一个明确
的指向,所以也就不能够实现你想要的目的了!
这种问题我们有很多解决的办法,我们可以定义一个static的整型
数组,static a[2]={0,1};这样就可以了!我们也可以定义一个全局的整型数组,这样也可以实现!
愿用余生致力编程
2009-10-26 21:50
举报帖子
使用道具
赠送鲜花
8
1/1页
1
快速回复:
关于函数返回地址
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.022752 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved