char s[30]和char *s=new char[30]的区别?????
woos 2004-07-24 04:28:00 以下面的程序为例:
char *f()
{
//
//char s[30];------------------1
//char *s=new char[30];---------2
sprintf(s,"%s","f() called.");
return s;
}
void main()
{
cout<<f()<<endl;
}
若是用标2的语句,输出的是“f() called.";
若是用1号语句,则输出一串乱码。
为什么?在C中,char *s和char s[30]的区别在哪?
编译器是怎样处理的?为什么和其它类型的数组大不相同?