Давным-давно я занимался программированием на Си для школы. Я помню кое-что, что я действительно ненавидел в 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: (ноль), nullB: (ноль)