NULL


NULL
Page d'aide sur les redirections Pour le musicien japonais, voir Kazuyuki K. Null.

NULL est un mot clef présent dans de nombreux langages informatiques, et qui désigne l'état d'un pointeur qui n'a pas de cible ou d'une variable qui n'a pas de valeur. La notion de valeur ou de pointeur NULL est en particulier présente dans les langages C et C++ (ainsi que dans plusieurs langages dont la syntaxe est proche comme le Java, le JavaScript ou le PHP).

En termes de bases de données, ce mot clef exprime le fait que la valeur d'une donnée n'est pas connue. Il est donc clair qu'il ne s'agit pas d'une valeur (puisque justement la valeur de la donnée n'est pas connue) mais bien d'un état dans lequel cette donnée se trouve.

Sommaire

Variantes

Il existe des équivalents nommés différemment :

  • Selon les langages, NULL s'écrit : NULL, Null, null.
  • Dans certains langages (Pascal, Lisp, Clos, Smalltalk, Ruby, ...), il est nommé nil.
  • En Python, l'équivalent de NULL est « None ».

C et C++

NULL est défini dans le fichier d'en-tête stddef.h de la bibliothèque standard du C et a pour valeur binaire 0 (Mot).

Voici un exemple de code montrant l'initialisation d'un pointeur à NULL, avant d'être utilisé pour stocker l'adresse d'une variable :

int a = 2;       //Déclaration de la variable a de type int (entier) et initialisé avec 2
int * p = NULL;  //Déclaration d'un pointeur sur un int qui vaut NULL
p = &a ;         //l'adresse de a est affecté au pointeur p
*p = 5;          //Déréférenciation de p, pour affecter 5 à la variable a

Dans ces langages, NULL désigne également la fin d'une chaîne de caractères.

Java

Le langage Java ne permet pas l'emploi de pointeur mais de références. Le mot clé null définit une référence nulle, c'est-à-dire ne désignant aucun objet en mémoire. Il s'agit de la valeur par défaut des variables non initialisées de type référence d'objet.

Voici un exemple de code montrant l'initialisation d'une référence à null, avant d'être utilisée pour référencer un objet alloué :

Object source = null;  // Déclaration d'une référence d'objet initialisée à null
source = new Object(); // Maintenant référencer un object alloué dynamiquement en mémoire

PHP

En php, une variable de valeur NULL est considérée comme non-définie :

<?php
$a=NULL;
 
if(isset($a)) {
    echo '$a est définie';
} else {
    echo '$a est indéfinie';
}
 
if(is_null($a)) {
    echo '$a est NULL';
} else {
    echo '$a n\'est pas NULL';
}
 
if(isset($b)) {
    echo '$b est défini';
} else {
    echo '$b est indéfini';
}
 
if(is_null($b)) {
    echo '$b est NULL';
} else {
    echo '$b n\'est pas NULL';
}

Affiche : $a est indéfinie. $a est NULL $b est indéfini $b est NULL

NULL, Typage et Méta-modélisation

Soient deux types A et B distincts (et sans rapport)

A a = null;
B b = null;

La modélisation correcte d'un système de types rendant ces deux affections valables implique que null possède un type sous-type union de A et B : None. None est un type singleton ayant comme seule valeur possible null défini comme l'union de tous les types du programme. Comme ce type n'est pas modélisable sans une forme spéciale du langage et que son utilité est limitée (il n'accepte qu'une seule valeur, null ), peu de langages à typage statique le proposent.

Si on s'intéresse aux langages à objets, et qu'on pose comme première approximation du système de type :

type = classe

Alors la classe de null (étrangement tous ces langages utilisent plutôt la forme nil) devient la classe singleton None, sous-classe de toutes les classes ayant pour seule instance null. Pour garantir un fonctionnement cohérent avec le comportement des envois de messages sur null, toutes ces méthodes doivent être redéfinie par l'envoi d'une exception NullPointerException.

Bien qu'en théorie la valeur null puisse être quelconque, en pratique tous les langages utilisent la valeur 0. Cette valeur est non adressable et toute tentative d'accès provoque une erreur de segmentation. Si l'on veut proprement lever une exception, on doit protéger tous les envois de messages par un test à null. Un bon compilateur ne génèrera pas ces tests dans les cas où le receveur est trivialement non null (cas des self, this, super et autres) et dans certains autres cas.

UNIX

Article détaillé : /dev/null.

Dans les systèmes UNIX, /dev/null est un fichier spécial qui détruit immédiatement toutes les données qui lui sont envoyées. Pour cette raison, ce fichier est appelé le « trou noir » ou encore la « poubelle ».

Microsoft Windows

Dans les systèmes d'exploitations de Microsoft, NUL est un fichier spécial qui détruit immédiatement toutes les données qui lui sont envoyées.

Sur les autres projets Wikimedia :


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article NULL de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Null — (de) …   Kölsch Dialekt Lexikon

  • null —  null …   Hochdeutsch - Plautdietsch Wörterbuch

  • Null —  Pour le musicien japonais, voir Kazuyuki K. Null. NULL est un mot clef présent dans de nombreux langages informatiques, et qui désigne l état d un pointeur qui n a pas de cible ou d une variable qui n a pas de valeur. La notion de valeur ou …   Wikipédia en Français

  • Null — may refer to: Contents 1 In computing 2 In art 3 In mathematics 4 In science 5 People …   Wikipedia

  • Null — «Null» redirige aquí. Para otras acepciones, véase Null (desambiguación). El término null o nulo es a menudo utilizado en la computación, haciendo referencia a la nada. En programación, null resulta ser un valor especial aplicado a un puntero (o… …   Wikipedia Español

  • null — [nʌl] adjective [only before a noun] 1. STATISTICS a null effect, result etc is one that is zero or nothing 2. LAW another name for null and void: • Their suit also asks the court to declare null the buyer s shareholder rights plan. * * * …   Financial and business terms

  • NULL (Си и Си++) — NULL в языках программирования Си и C++  макрос, объявленный в заголовочном файле stddef.h (и других заголовочных файлах). Значением этого макроса является зависящая от реализации константа нулевого указателя (англ. null pointer constant).… …   Википедия

  • null — / nəl/ adj [Anglo French nul, literally, not any, from Latin nullus, from ne not + ullus any]: having no legal or binding force: void a null contract Merriam Webster’s Dictionary of Law. Merriam Webster. 1996 …   Law dictionary

  • Null — Null, a. [L. nullus not any, none; ne not + ullus any, a dim. of unus one; cf. F. nul. See {No}, and {One}, and cf. {None}.] 1. Of no legal or binding force or validity; of no efficacy; invalid; void; nugatory; useless. [1913 Webster] Faultily… …   The Collaborative International Dictionary of English

  • Null-O — is a 1958 science fiction short story by Philip K. Dick. This rather brief story examines the concept of totally unempathic and logical humans ( Null O s) in an obvious parody of the plot and concepts of The Players of Null A by A. E. van Vogt.… …   Wikipedia

  • Null — Sf std. (16. Jh.) Entlehnung. Entlehnt aus l. nulla gleicher Bedeutung, feminine Substantivierung von l. nullus keiner . Dieses ist eine Lehnbedeutung von arab. ṣifr, das ebenfalls Null und leer bedeutet und das seinerseits ai. śūnya Null, leer… …   Etymologisches Wörterbuch der deutschen sprache