对结构指针的NULL赋值不能通过函数工作的原因是,函数中传递的是指针的副本,而不是指针本身。因此,在函数内部对指针进行NULL赋值,只会修改指针副本的值,而不会影响原始指针。
要解决这个问题,可以通过传递指针的指针或者使用返回值的方式来修改指针的值。具体的做法如下:
void setNull(int** ptr) {
*ptr = NULL;
}
int main() {
int* ptr = malloc(sizeof(int));
setNull(&ptr);
// 现在ptr指向NULL
return 0;
}
int* setNull() {
return NULL;
}
int main() {
int* ptr = malloc(sizeof(int));
ptr = setNull();
// 现在ptr指向NULL
return 0;
}
通过以上两种方式,我们可以在函数中成功将结构指针赋值为NULL,并且在函数外部也能够正确地使用修改后的指针值。
领取专属 10元无门槛券
手把手带您无忧上云