Нульовий вказівник: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Sanya3 (обговорення | внесок)
м додана Категорія:Ніщо з допомогою HotCat
Рядок 14: Рядок 14:


== Особливості використання в різних мовах ==
== Особливості використання в різних мовах ==

[[ANSI C]] гарантує, що значення ''NULL'' еквівалентне 0, тому записи
=== ANSI C ===
{{Main|C (мова програмування)}}

[[ANSI C]] гарантує, що значення ''NULL'' еквівалентне 0, тому записи
<source lang=C>
<source lang=C>
int *a, *b;
int *a, *b;
Рядок 22: Рядок 26:
еквівалентні&nbsp;— вказівники a та b отримають однакове значення.
еквівалентні&nbsp;— вказівники a та b отримають однакове значення.


На відміну від C в Паскалі, який є дуже суворим щодо типів, ''Nil'' в жодному випадку не еквівалентний числу 0.
На відміну від C в Паскалі, який є дуже суворим щодо типів, ''Nil'' в жодному випадку не еквівалентний числу 0.
<!--
<!--
В будь-якому випадку вказівник, який має значення NULL не можна розіменовувати. Наприклад, якщо після приведеного вище коду виконати присвоєння
В будь-якому випадку вказівник, який має значення NULL не можна розіменовувати. Наприклад, якщо після приведеного вище коду виконати присвоєння
<code|C>
<code|C>
*a = 1;
*a = 1;
</code>,
</code>,
то результатом буде [[core dump]]&nbsp;— програма вилетить. -->
то результатом буде [[core dump]]&nbsp;— програма вилетить. -->

=== Java ===
{{Main|Java}}

Мова програмування [[Java]] використовує <code>null</code> для позначення порожнього посилання. Також мова визначає так званий тип даних null. При спробі використання <code>null</code> замість реального об'єкта виникає виняткова подія класу <code>java.lang.NullPointerException</code>. Зокрема, вона виникає при:
* виклику динамічного метода об'єкта <code>null</code>.
* доступі або зміні поля об'єкта <code>null</code>.
* обчисленні довжини об'єкта <code>null</code> наче він є масивом.
* доступі або зміні комірок об'єкта <code>null</code> наче він є масивом.
* створенні виняткової ситуації з об'єктом <code>null</code> замість об'єкта типу <code>Throwable</code>.

Додатки також можуть створювати виняткові ситуації типу <code>NullPointerException</code> за інших невірних використаннях об'єктів типу <code>null</code><ref>{{cite web
| url = https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
| title = Class NullPointerException
| publisher = Oracle
| work = Java™ Platform Standard Ed. 8. API Specification
| date = 2016 }}</ref>.


== Примітки ==
== Примітки ==

Версія за 11:58, 13 березня 2017

Нульовий (порожній) вказівник (рідше - покажчик ) — вказівник, який нікуди не вказує. Використовується для того, щоб показати, що дана змінна-вказівник ні на що не посилається. У різних мовах програмування представлений різними константами, наприклад:

Тоні Гоар, який винайшов нульовий вказівник у 1965 році, вважає це помилкою, яка імовірно коштувала мільярди доларів, оскільки спроба розіменування нульового вказівника зазвичай приводить до збою й припинення роботи програми [1].

Особливості використання в різних мовах

ANSI C

ANSI C гарантує, що значення NULL еквівалентне 0, тому записи

  int *a, *b; 
  a = NULL;
  b = 0;

еквівалентні — вказівники a та b отримають однакове значення.

На відміну від C в Паскалі, який є дуже суворим щодо типів, Nil в жодному випадку не еквівалентний числу 0.

Java

Докладніше: Java

Мова програмування Java використовує null для позначення порожнього посилання. Також мова визначає так званий тип даних null. При спробі використання null замість реального об'єкта виникає виняткова подія класу java.lang.NullPointerException. Зокрема, вона виникає при:

  • виклику динамічного метода об'єкта null.
  • доступі або зміні поля об'єкта null.
  • обчисленні довжини об'єкта null наче він є масивом.
  • доступі або зміні комірок об'єкта null наче він є масивом.
  • створенні виняткової ситуації з об'єктом null замість об'єкта типу Throwable.

Додатки також можуть створювати виняткові ситуації типу NullPointerException за інших невірних використаннях об'єктів типу null[2].

Примітки

  1. Tony Hoare. Null References: The Billion Dollar Mistake
  2. Class NullPointerException. Java™ Platform Standard Ed. 8. API Specification. Oracle. 2016.