c - 代码有什么问题?

标签 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/

相关文章:

c - 使用c中的函数以相反的顺序打印数字

c - 使用递归在 C 中反转字符串

c - 使用 getopt 解析命令行参数

python - 用并行化的 C 程序扩展 Python(在 OMP 下)

c - open() 导致程序终止

java - 在 Java 中按引用传递与按值传递

访问结构指针的正确方法

c - PortAudio 的 PaStreamFinishedCallback 的安全操作

无法访问cgo中的c变量

c - (内核简单编程)我想知道为什么pid会这样显示