Null Pointer

Posted on   Februari 6, 2018   |   Last Modified   Februari 6, 2018
nullptr

Variabel pointer tidak berbeda jauh dengan variabel biasa. Ketika kita membuat variabel pointer dan tidak memberi nilai awal di saat itu maka kita akan mendapatkan nilai sampah pada variabel pointer yang kita dirikan.

Penulis sering mengatakan bahwa inisialisasi itu penting tapi bukan berarti kalian harus inisialisasi menggunakan nilai yang bernilai. Ada suatu kata kunci yang dapat anda gunakan untuk menginisialisasi dengan nilai kosong, kata kunci itu adalah NULL.

NULL

NULL adalah Preprocessor macro berasal dari Bahasa C yang di dalamnya berisi nilai 0. NULL sangat berguna untuk mengkosongkan nilai dari suatu variabel.

#include <iostream>
int main()
{
    int *p=NULL;
    std::cout<<p;
    return 0;
}

NULL tidak hanya untuk digunakan pada variabel pointer,kata kunci NULL juga dimungkinkan digunakan pada apa saja, dimanapun itu, dan akan tetap memiliki nilai/fungsi yang sama.

tapi untuk memberi nilai kosong pada variabel pointer, NULL bukanlah pilihan tepat untuk melakukan itu. Pada C++ 11 dikenalkan kata kunci baru yang dikhususkan untuk memberi nilai kosong pada pointer, yaitu nullptr.

nullptr

Nullptr adalah kata kunci konstanta rvalue, mirip dengan nilai Boolean false. C++11 menggantikan NULL dengan nullptr karena NULL sebenarnya lebih ditujukan untuk variabel biasa (bukan pointer), dan NULL memiliki nilai 0 yang merupakan integer. hal itu tidak konsisten dengan wadah yang berupa pointer.

Di bawah ini akan membuktikan bahwa null adalah integer dan nullptr lebih pantas untuk nilai pointer.

#include <iostream>
#include <typeinfo>

int main()
{
    std::cout<<typeid(NULL).name()<<"\n"<<typeid(nullptr).name();
    return 0;
}

Mungkin saat pertama kali kalian mendengar pengertian NULL dan nullptr akan berpikiran bahwa mereka adalah sama, tapi dalam program di atas akan menunjukan perbedaan dari NULL dan nullptr.

nullptr_t

nullptr_t adalah tipe data dari C++11 yang dimungkinkan untuk digunakan sebagai tipe data, dan nullptr_t hanya dapat menerima satu nilai yaitu nullptr.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *