为什么给指针赋值为NULL会宕掉
时间: 2024-06-10 10:08:41 浏览: 137
给指针赋值为NULL不会导致宕掉。在C语言中,给指针赋值为NULL只是将指针的值设置为0,表示指针不指向任何有效的内存地址。宕掉的原因可能是在后续代码中对NULL指针进行了解引用操作,即使用了"*"运算符来访问指针所指向的内存。由于NULL指针并没有有效的内存地址,所以解引用操作会导致宕机。
在你提供的第一个例子中,给指针a赋值为NULL,然后将其作为参数传递给函数f,而函数f中会对形参*a进行操作。但由于形参*a在内存中的地址和实参a不同,所以对形参*a的修改不会影响到实参a的值。所以在主函数中输出*a时会宕机。
而在第二个例子中,给指针a赋值为NULL,然后将其作为参数传递给函数f,函数f中会将形参a重新赋值为新分配的内存地址。但同样由于形参*a和实参a在内存中的地址不同,所以对形参*a的重新赋值也不会影响到实参a的值。所以在主函数中输出a时会输出0。
阅读全文