【发布时间】:2013-09-19 06:49:04
【问题描述】:
这是我写的代码,
char *foo();
void main()
{
char *str=foo();
strcpy(str,"Holy sweet moses! I blew my stack!!");
printf("%s",str);
}
char * foo()
{
char str[256];
return str;
}
当我在函数 foo() 中使用 char 数组时,main() 函数中的 strcpy 不会将字符串复制到 str。但是,当我在函数 foo() 中使用 int 数组时,main() strcpy 复制成功。
即
int str[256]; //in function foo
输出
Holy sweet moses! I blew my stack!!
如果
char str[256]; //in foo()
输出:什么都没有!
【问题讨论】:
-
您将获得相同的输出。再次检查!
-
不..我确定..我已经测试了一个小时!
-
无论你在函数中使用int还是char数组,你所做的都是错误的。当
foo()返回时,数组超出范围。所以你正在返回一个指向未分配内存的指针。 -
@Alderath 请正确阅读问题..这只是我们的问题..
-
@mahesh 我是说你正在返回一个指向未分配内存的指针。笼统地回答正在发生的事情是不可能的。你正在做的是未定义的行为。不同的编译器可能会产生不同的结果。
标签: c