未初始化的指针被称为野生指针,因为它们指向某个任意内存位置,可能会导致程序崩溃或行为不正常。
null
int main() { int *p; /* wild pointer */ /* Some unknown memory location is being corrupted. This should never be done. */ *p = 12; } |
请注意,如果指针p指向一个已知变量,那么它不是一个野生指针。在下面的程序中,p是一个野生指针,直到它指向a为止。
int main() { int *p; /* wild pointer */ int a = 10; p = &a; /* p is not a wild pointer now*/ *p = 12; /* This is fine. Value of a is changed */ } |
如果我们希望指针指向一个值(或一组值),而不需要为该值指定变量,那么我们应该显式地分配内存,并将该值放入分配的内存中。
int main() { int *p = ( int *) malloc ( sizeof ( int )); *p = 12; /* This is fine (assuming malloc doesn't return NULL) */ } |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END