| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1088 人关注过本帖
标题:这两个程序一个错误一个正确,谁知道为什么
只看楼主 加入收藏
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
收藏
 问题点数:0 回复次数:10 
这两个程序一个错误一个正确,谁知道为什么
char* get_str(void)
{
    char str[] = {"abcd"};
    return str;
}
int main(int argc, char* argv[])
{
    char* p = get_str();
    printf("%s\n", p);
    return 0;
}


第二个
char* get_str(void)
{
    char* str = {"abcd"};
    return str;
}
int main(int argc, char* argv[])
{
    char* p = get_str();
    printf("%s\n", p);
    return 0;
}
搜索更多相关主题的帖子: void return 
2008-10-15 20:32
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
我怎么感觉两个都是错的-,-

樱花大战,  有爱.
2008-10-15 20:46
冰烨
Rank: 1
来 自:不咔界
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2007-10-30
收藏
得分:0 
我也觉得两个都不对。。。
反回的地址有效么?

要么死去,要么奋斗!
2008-10-15 20:51
冰烨
Rank: 1
来 自:不咔界
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2007-10-30
收藏
得分:0 
修正修正。。。。
第一个应该是错的,函数结束,内存释放,返回地址无效。。
第二被编译器认为是字符串常量,放在内存的静态区,函数结束,不被释放,地址有效

要么死去,要么奋斗!
2008-10-15 21:00
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
LS正解...

[[it] 本帖最后由 中学者 于 2008-10-15 21:03 编辑 [/it]]

樱花大战,  有爱.
2008-10-15 21:02
kakaqq
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2008-10-7
收藏
得分:0 
第二个是对的。我刚试了一下。第一个返回的地址无效。
2008-10-15 21:03
冰烨
Rank: 1
来 自:不咔界
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2007-10-30
收藏
得分:0 
[bo][un]中学者[/un] 在 2008-10-15 21:02 的发言:[/bo]

LS正解...

经验证可以通过

要么死去,要么奋斗!
2008-10-15 21:04
冰烨
Rank: 1
来 自:不咔界
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2007-10-30
收藏
得分:0 
char str[] = {"abcd"};
abcd在常量区,但str只会把abcd的值复制一遍.
所以函数结束的时候str没了,abcd还在,但访问不到

char* str = {"abcd"};
abcd在常量区,p直接指它地址
函数结束了p这个变量的空间没了而已
没有影响到它指向的abcd.

要么死去,要么奋斗!
2008-10-15 21:07
唐僧
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-9
收藏
得分:0 
经过认真验证第一个是正确的,第二个是错误的。因为char* str是声明了一个指针变量而 {"abcd"}是数组初始化的形式
2008-10-17 20:45
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
第一个是错误的!
2008-10-17 22:00
快速回复:这两个程序一个错误一个正确,谁知道为什么
数据加载中...
 
   



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

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