为什么将指针传递给函数会导致运行时错误?

Why passing pointer to a function lead to a Runtime Error?

我试图了解将指针传递给函数的工作原理,但我不了解以下情况: 为什么此代码有效

void setVar(uint32_t* var) {
    *var = 10;
} 

int main() {
    uint32_t myVar = 0;
    setVar(&myVar);

    return 0;
}

而这个会导致运行时错误? :

void setVar(uint32_t* var) {
    *var = 10;
} 

int main() {
    uint32_t* myVar = 0;
    setVar(myVar);

    return 0;
}

非常感谢您的回答。

问题不是指针。 问题是您使用 0 (uint32_t* myVar = 0;) 初始化传递给函数的指针,然后在您的函数 (*var = 10;) 中取消引用它,这是不允许的。 您应该确保传递的指针不是 NULL 指针,要么在函数内执行此操作,要么确保仅使用有效参数调用该函数。