为什么将指针传递给函数会导致运行时错误?
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
指针,要么在函数内执行此操作,要么确保仅使用有效参数调用该函数。
我试图了解将指针传递给函数的工作原理,但我不了解以下情况: 为什么此代码有效
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
指针,要么在函数内执行此操作,要么确保仅使用有效参数调用该函数。