请问下面程序对错,讲讲为什么?多谢

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:50:27
char *buf()
{
char *data;
char str[]="hello";
data=str;
return data;
}
上面函数将返回一个指向字串“hello”的指针;
我觉得不对,但不知道为什么?

语法没有错误。

关键的问题是你使用的是子函数,问题就大了。
str[]数组,只有在调用char *buf() 函数时才动态分配空间,函数结束后空间即被收回。而你通过return data返回数组的起始地址,则无意义了。
特别危险的是调用他的函数如果使用已经收回的空间时,危害可以想想了。