问下面函数输出结果是什么?
char *sss()
{
char p[]="Hello world";
return p;
}
void main()
{
char *q =NULL;
q = sss();
printf("%s/n",q);
return ;
}
分析:p数组是sss函数中的局部变量,而main函数调用sss()时,q指向了p的地址,但是sss()运行完毕后,p数组释放,输出的值就不再是“Hello world”,而是乱码。
做了一个简单的测试:使用vc6.0 和Vs2005时,如果将printf改为cout,输出结果仍为乱码,但是使用编译器mingw developer studio时,改为cout就能输出“Hello world”,很奇怪。暂时留着这个问题以后探究