以下代码是面试问题,我无法理解输出。谁能帮忙?谢谢。以下代码的输出是什么?为什么?
#include <stdio.h>
char* string_1()
{
char* p = "ABCD";
return p;
}
char* string_2()
{
char p[] = "ABCD";
return p;
}
int main(void)
{
printf("%s\n",string_1());
printf("%s\n",string_2());
}
输出是什么?你对输出有什么期望? – lulyon
第一个是预期的ABCD,第二个是未定义行为,因为您正在返回一个已超出范围的局部变量。 –
@PaulR:为什么不发表评论作为答案? – alk