请看下面的代码:
char* test ( )
{
char word[20];
printf ("Type a word: ");
scanf ("%s", word);
return word;
}
void main()
{
printf("%s",test());
}
当函数返回时,变量 word
被销毁并打印一些垃圾值。但是当我更换
char word[20];
通过 char *word;
它打印出正确的值。根据我的说法,指针变量应该像字符数组一样被销毁,输出应该是一些垃圾值。谁能解释一下歧义?
最佳答案
未定义的行为就是 - 未定义。有时它似乎会起作用,但这只是巧合。在这种情况下,未初始化的指针可能恰好指向有效的可写内存,并且该内存未用于任何其他用途,因此它成功地写入和读取了值。这显然不是您应该指望的事情。
关于c - C 中的指针和函数歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11178494/