声明与使用
1. 完整例子
| 1 | int a = 1; |
| 2 | int *p = &a; |
| 3 | int *q = NULL; // 不用时置空 |
| 4 | |
| 5 | q = p; |
| 6 | if (q != NULL) { |
| 7 | printf("%d\n", *q); |
| 8 | } |
2. 野指针概念
未初始化的指针值随机,解引用可能读写任意内存。声明后要么指向有效对象,要么 NULL。
3. 常见错误
| 1 | int *p; // 危险:野指针 |
| 2 | *p = 10; // 可能崩溃或写坏内存 |
| 3 | int *p2 = NULL; |
| 4 | *p2 = 10; // 也危险,必须先判断 |