dej*_*avu 0 c pointers function
请看下面的代码:
char* test ( )
{
char word[20];
printf ("Type a word: ");
scanf ("%s", word);
return word;
}
void main()
{
printf("%s",test());
}
Run Code Online (Sandbox Code Playgroud)
当函数返回时,变量word被销毁并打印一些垃圾值.但当我更换
char word[20];
Run Code Online (Sandbox Code Playgroud)
通过 char *word;
它打印正确的值.根据我的说法,指针变量应该被破坏,类似于字符数组,输出应该是一些垃圾值.任何人都可以解释一下这种含糊之处吗?
未定义的行为只是 - 未定义.有时似乎会起作用,但这只是巧合.在这种情况下,未初始化的指针可能恰好指向有效的可写内存,并且该内存不用于其他任何内容,因此它成功写入并读取该值.这显然不是你应该指望的.