求助 !!!!!如下代码输出结果是什么?

#include<stdio.h>
char *myString()
{
    char buffer[6] = {0};
    char *s = "Hello World!";
    for (int i = 0; i < sizeof(buffer) - 1; i++)
    {
        buffer[i] = *(s + i);
    }
    return buffer;
}
int main(int argc, char **argv)
{
    //如果把printf函数换成下面的代码就可以,为什么printf会这样呢?????
    //char str[6] = {0};
    //strcpy(str,myString());
    //printf("%s\n", str);
    printf("%s\n", myString());
    return 0;
}#Java工程师#
全部评论
1 myString函数中的buffer数组存在于栈上,当函数返回后便“结束生命周期”,其实它的内容依然存在于内存中,只要不被栈上其他东西破坏,但不幸的是:main函数里面的printf调用会影响。 2 其实注释里面的代码跟之前的情况类似,得看myString()的具体上下文环境,跟编译器也有关系。 3 两种情况的代码在我的机器上运行均无法得到“正确结果”。
点赞 回复 分享
发布于 2015-08-16 11:57

相关推荐

2024-12-21 01:36
电子科技大学 Java
牛客850385388号:员工福利查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务