<分区>
void* myfunction() {
char *p;
*p = 0;
return (void*) &p;
}
我知道问题出在 return 语句中,但它令人困惑。有什么提示吗?
谢谢。
标签 c
<分区>
void* myfunction() {
char *p;
*p = 0;
return (void*) &p;
}
我知道问题出在 return 语句中,但它令人困惑。有什么提示吗?
谢谢。
最佳答案
*p = 0;
中的 return 语句之前有问题。您还没有初始化 p
,所以这会写入到初始化指针恰好保存的任何随机位置。这给出了未定义的行为,因此之后的任何内容都没有任何有意义的解释。
假设您修复了该问题,那么是的,return 语句也将是一个问题——您将返回一个指向数据的指针,该数据在返回完成之前被销毁,因此任何使用您返回的指针的尝试都会导致 undefined再次行为。
关于c - 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10544522/