| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 372 人关注过本帖
标题:指针的问题
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:10 回复次数:4 
指针的问题
#include<stdio.h>
char *GetMemory(void)
{
char p[]="hello world";
return p;
}
main()
{
char *str=NULL;
str=GetMemory();
puts(str);
}
这个程序会有错误,因为当调用函数char*GetMemory(void)完毕之后系统会自动的释放内存空间,这样就不可能实现str指向“hello world”这个字符串,我想问的是这个程序是否可以说明指针地址不能够由“被调用函数返回给主调函数”呢?

谢谢大虾们了呀!
搜索更多相关主题的帖子: 指针 
2009-10-20 22:25
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:5 
#include<stdio.h>
char *GetMemory(void)
{
static char p[]="hello world"; //可以这样完善程序
return p;
}
main()
{
char *str=NULL;
str=GetMemory();
puts(str);
}

如你所说,函数调用结束后内存单元释放,所以str不指向hello world,但是函数仍然把地址p传回了主函数,只是那时该地址对应的内容已发生变化。可以好好看看指针函数~
2009-10-20 22:39
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 2楼 m456m654
谢谢二楼了呀!我会的!

愿用余生致力编程
2009-10-20 22:40
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 3楼 我菜119
我还想多一句嘴,那就是如果我没有申请一个static的指针的话,那是不是说明“被调用函数的指针地址不能够返回给主调函数呢?”

谢谢了呀!

愿用余生致力编程
2009-10-20 22:43
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:5 
如果我没有申请一个static的指针的话,
不是将指针定义为static,而是将字符串定义为static,
我还是觉得“被调用函数的指针地址不能够返回给主调函数呢?”不成立。指针是指针,字符串是字符串,子函数调用结束后是释放字符串的内容,指针根本没有变。
打个比方,你用一个袋子去买水果,本来要放一个苹果在袋子里,结果回来的时候,袋子里面是一个橘子。袋子仍然是指向水果的,只是水果的内容变了。但是袋子仍然回来le。
ok?


2009-10-20 23:17
快速回复:指针的问题
数据加载中...
 
   



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

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