NULL (znak)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

NULL lub NULznak sterujący o wartości liczbowej 0, informujący o braku informacji[1], służący jako znak wypełniający[2] w czasie lub na nośnikach danych[3][4]. Jest on dostępny w większości systemów kodowania znaków jak np. ASCII, EBCDIC lub Unicode oraz niemal we wszystkich głównych językach programowania.

Pierwotne znaczenie znaku NULL było podobne do instrukcji pustej. Wysyłanie go do drukarki lub terminalu nie powodowało wykonania żadnej czynności (chociaż niektóre terminale wyświetlały go nieprawidłowo jako odstęp). Na taśmach dziurkowanych wartość NULL była zapisywana jako obszar bez dziurek, stąd nowe taśmy były niejako z definicji wypełnione znakami NULL, a zarezerwowane przerwy na taśmach pozwalały na późniejsze „uzupełnienie” danych w miejscach gdzie pozostawiono znaki NULL.

Obecnie znak NULL ma znacznie większe znaczenie w języku C i językach pochodnych[5], jak również w wielu formatach danych, gdzie jego funkcją jest informacja o końcu danych tekstowych.

Zapis[edytuj | edytuj kod]

Język C i pochodne[edytuj | edytuj kod]

W języku C znak NULL jest powszechnie zapisywany jako sekwencja specjalna \0 w stałej łańcuchowej lub znakowej w kodzie źródłowym. Nie jest to jednak oddzielna sekwencja specjalna, lecz raczej sekwencja specjalna w zapisie ósemkowym z jedną cyfrą 0, wobec czego za \0 nie można umieszczać cyfr od 0 do 7, gdyż to spowoduje ich interpretowanie jako dalszego ciągu w zapisie ósemkowym. Zapisy pochodne od pierwowzoru obejmują \000, \x00, \u0000.

Język Pascal i pochodne[edytuj | edytuj kod]

W języku Pascal i pochodnych znak NULL można wprowadzić w następujące sposoby:

  • sekwencja sterująca ^@
  • sekwencja numeryczna dziesiętna #0
  • sekwencja numeryczna szesnastkowa #$0.

URL[edytuj | edytuj kod]

W adresie URL znak NULL można uzyskać przez %00. Stosowanie takiego znaku może prowadzić do awarii lub nieprawidłowego działania niedostatecznie zabezpieczonych serwisów internetowych[6].

Przypisy

  1. Markowski, Rydzewski i Kruszyński 1989 ↓, s. 88.
  2. Cielątkowski i Porębski 1992 ↓, s. 373.
  3. RFC 20 – ASCII format for Network Interchange (ang.). IETF, październik 1969. [dostęp 2012-12-12].
  4. The set of control characters of the ISO 646 (ang.). Secretariat ISO/TC 97/SC 2, 1975-12-01. [dostęp 2012-12-12]. s. 4.4.
  5. Grębosz 2000 ↓, s. 38-39.
  6. Null Byte Injection (ang.). WASC Threat Classification, 2010. [dostęp 2012-12-13].

Bibliografia[edytuj | edytuj kod]

  • Andrzej Markowski, Andrzej Rydzewski, Henryk Kruszyński: Leksykon techniki mikrokomputerowej. Warszawa: Wydawnictwo Czasopism i Książek Technicznych NOT-SIGMA, 1989, seria: Mikrokomputery. ISBN 83-85001-28-X.
  • Jerzy Grębosz: Symfonia C++. Programowanie w języku C++ orientowane obiektowo. T. I. Oficyna Kallimach, 2000.
  • Janusz Cielątkowski, Wiesław Porębski: IBM PC dla każdego. Warszawa: Komputerowa Oficyna Wydawnicza „HELP”, 1992. ISBN 83-85137-27-0.