W języku C++ od wersji C++11, dostępny jest nullptr oraz nullptr_t który zapewnia poprawną inicjalizację wskaźnika. Standard języka C++ zapewnia że dealokacja takiego wskaźnika (czyli delete) zostanie wykonana poprawnie. To oznacza że możesz nie testować czy wskaźnik ma wartość nullptr bo testuje to delete i poprawnie usunie te dane (po prostu "cicho" nie zrobi nic...).To jest jeden z powodów dlaczego używamy nullptr.
Inny powód to to że nullptr w zamierzony sposób pozbawiony jest możliwości konwersji na int co było problemem przy stosowaniu NULL. Typ nullptr_t może być typem argumentu w funkcji a taka funkcja zostanie wybrana dzięki mechanizmom polimorfizmu.
To co zrobiłeś w kodzie, oczywiście jest poprawne. Na platformach wbudowanych w ten sposób wskazuje się rejestry z danym numerem portu. Pracując w systemie operacyjnym, przypisując tu jakąś wartość, możesz jednak trafić na adresy danych które zostaną zniszczone lub na pamięć która nie została procesowi przydzielona. Wtedy program będzie zachowywał się w sposób nieprzewidziany.
Inną ciekawostką jest także to że nie na każdej platformie NULL będzie zerem.