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

C 为什么向函数传递指针会导致运行时错误?,c,pointers,runtime-error,C,Pointers,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_

我试图理解向函数传递指针是如何工作的,但我不理解以下情况: 为什么这个代码有效

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*myVar=0;
)初始化传递给函数的指针,然后在函数中取消对它的引用(
*var=10;
),这是不允许的。
您应该确保传递的指针不是
NULL
指针,或者在函数中执行此操作,或者确保仅使用有效参数调用该函数。

因为您取消了对NULL指针的引用。此外,您没有为要写入的函数分配内存。这是因为
uint32\u t*myVar=0
myVar
初始化为
NULL
,而不是
*myVar
,因为您正在将uint32\u t指针(myVar)初始化为0,您是说您将内存地址存储到myVar中,当您取消引用它时,您正试图将内存地址0设置为10,您要做的是
uint32\u t myVar=10;uint32_t*指针=&myVar并将指针传递到函数相关:相关: