搜索
查看: 1859|回复: 1
打印 上一主题 下一主题

关于函数返回值类型是指针的指针的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-12-4 00:52:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
[mw_shl_code=c,true]#include <stdio.h>

char **why(void);

int main() {
        printf("%s\n%s\n", *why(), *(why() + 1));
        return 0;
}

char **why(void) {
        static char *result[2];
        char string[50] = "0101010101011";
       
        result[0] = string;
        result[1] = "very strange";
       
        return result;
}[/mw_shl_code]


程序的运行结果有点怪异:
Jud0@
very strange

第一个只为什么是一串不知道是什么的东西而不是0101010101011
谢谢啦~

沙发
 楼主| 发表于 2012-12-6 10:57:22 | 只看该作者
居然没有人回答。。
我已经知道啦
//上面代码中,string的内存在函数结束后就被系统收回,地址也就不在了。
//而result[0]中保存的是string的地址,所以在主函数中会显示乱码!
//改正: line12:  static char string[50] = "0101010101011";
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表