Нульовий вказівник: відмінності між версіями
[перевірена версія] | [перевірена версія] |
Sanya3 (обговорення | внесок) м додана Категорія:Ніщо з допомогою HotCat |
|||
Рядок 14: | Рядок 14: | ||
== Особливості використання в різних мовах == |
== Особливості використання в різних мовах == |
||
⚫ | |||
=== ANSI C === |
|||
{{Main|C (мова програмування)}} |
|||
⚫ | |||
<source lang=C> |
<source lang=C> |
||
int *a, *b; |
int *a, *b; |
||
Рядок 22: | Рядок 26: | ||
еквівалентні — вказівники a та b отримають однакове значення. |
еквівалентні — вказівники a та b отримають однакове значення. |
||
На відміну від C в Паскалі, який є дуже суворим щодо типів, ''Nil'' в жодному випадку не еквівалентний числу 0. |
На відміну від C в Паскалі, який є дуже суворим щодо типів, ''Nil'' в жодному випадку не еквівалентний числу 0. |
||
<!-- |
<!-- |
||
В будь-якому випадку вказівник, який має значення NULL не можна розіменовувати. Наприклад, якщо після приведеного вище коду виконати присвоєння |
В будь-якому випадку вказівник, який має значення NULL не можна розіменовувати. Наприклад, якщо після приведеного вище коду виконати присвоєння |
||
<code|C> |
<code|C> |
||
*a = 1; |
*a = 1; |
||
</code>, |
</code>, |
||
то результатом буде [[core dump]] — програма вилетить. --> |
то результатом буде [[core dump]] — програма вилетить. --> |
||
=== 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
Нульовий (порожній) вказівник (рідше - покажчик ) — вказівник, який нікуди не вказує. Використовується для того, щоб показати, що дана змінна-вказівник ні на що не посилається. У різних мовах програмування представлений різними константами, наприклад:
- У машинних кодах: 0
- У мовах Pascal, Clipper, Modula 2, Ruby, Lua : nil
- У C-подібних мовах: NULL
- У мовах Java та C#: null
- У мові Icon: &null
- У мові Python: None
- У мові Visual Basic: Nothing
Тоні Гоар, який винайшов нульовий вказівник у 1965 році, вважає це помилкою, яка імовірно коштувала мільярди доларів, оскільки спроба розіменування нульового вказівника зазвичай приводить до збою й припинення роботи програми [1].
Особливості використання в різних мовах
ANSI C
ANSI C гарантує, що значення NULL еквівалентне 0, тому записи
int *a, *b;
a = NULL;
b = 0;
еквівалентні — вказівники a та b отримають однакове значення.
На відміну від C в Паскалі, який є дуже суворим щодо типів, Nil в жодному випадку не еквівалентний числу 0.
Java
Мова програмування Java використовує null
для позначення порожнього посилання. Також мова визначає так званий тип даних null. При спробі використання null
замість реального об'єкта виникає виняткова подія класу java.lang.NullPointerException
. Зокрема, вона виникає при:
- виклику динамічного метода об'єкта
null
. - доступі або зміні поля об'єкта
null
. - обчисленні довжини об'єкта
null
наче він є масивом. - доступі або зміні комірок об'єкта
null
наче він є масивом. - створенні виняткової ситуації з об'єктом
null
замість об'єкта типуThrowable
.
Додатки також можуть створювати виняткові ситуації типу NullPointerException
за інших невірних використаннях об'єктів типу null
[2].
Примітки
- ↑ Tony Hoare. Null References: The Billion Dollar Mistake
- ↑ Class NullPointerException. Java™ Platform Standard Ed. 8. API Specification. Oracle. 2016.
Це незавершена стаття про мови програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |