很久以前我曾经在学校里用C语言编程,有一件事情让我非常讨厌:未初始化的指针不会默认为 NULL。
我问了很多人,包括老师,为什么一个未被赋值的指针不会默认指向 NULL?这看起来更加危险和不可预测。
答案是考虑到性能原因,但我从来没有相信过这个解释。我认为如果 C 默认指向 NULL,很多编程历史上的bug本可以避免。
以下是一些C代码以说明我所说的内容(说笑话):
#include <stdio.h>
void main() {
int * randomA;
int * randomB;
int * nullA = NULL;
int * nullB = NULL;
printf("randomA: %p, randomB: %p, nullA: %p, nullB: %p\n\n",
randomA, randomB, nullA, nullB);
}
编译时出现警告(很高兴看到C编译器比我在学校时好多了),并输出:
randomA: 0xb779eff4,randomB: 0x804844b,nullA: (nil),nullB: (nil)
%p
№╝їУђїСИЇТў»%d
сђѓ - tomlogic