Давно я учился в школе для С. Я помню то, что я действительно ненавидел о C: неназначенные указатели не указывают на NULL.
Я спросил многих людей, включая учителей, почему в мире они будут делать поведение по умолчанию неназначенного указателя, а не на NULL, поскольку это кажется более опасным для непредсказуемого.
Ответ был якобы производительностью, но я никогда этого не покупал. Я думаю, что многие ошибки в истории программирования можно было бы избежать, если бы C по умолчанию был NULL.
Здесь некоторый код 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)