Apakah nullptr dalam C++

Apakah Nullptr Dalam C



Dalam C++, nilai penunjuk tertentu dipanggil a penunjuk nol digunakan untuk menunjukkan bahawa penunjuk tidak merujuk kepada mana-mana lokasi memori yang sah. Dalam standard C++11 atau lebih baru, ia diwakili oleh kata kunci “ nullptr ” atau dengan nilai malar 0.

The penunjuk nol idea adalah penting kerana ia membantu dalam mencegah akses memori yang salah, yang boleh mengakibatkan ralat masa jalan yang tidak dijangka dan kegagalan perisian. Pertimbangkan senario apabila program cuba membaca daripada atau menulis ke alamat memori yang sama ada belum dicipta atau yang telah diagihkan. Tingkah laku itu tidak dapat ditentukan dalam C++ dan boleh mengakibatkan masalah masa jalan yang serius atau kecacatan keselamatan. Penunjuk adalah tidak sah dan tidak boleh dinyahrujuk jika ia memaut kepada nilai nol. Penamatan program, kesalahan segmentasi atau akses memori yang tidak dibenarkan hanyalah beberapa contoh tingkah laku yang tidak dijangka yang mungkin berlaku apabila membatalkan rujukan penunjuk nol .

Contoh nullptr dalam C++

#include
menggunakan ruang nama std ;
int utama ( )
{
nullptr_t pi1, pi2 ;
jika ( pi1 >= pi2 )
{
cout << 'Penunjuk 1 lebih besar daripada nilai penunjuk 2' << endl ;
}
lain
{
cout << 'Penunjuk 2 lebih besar daripada nilai penunjuk 1' << endl ;
}
char * ch = pi1 ;
jika ( ch == nullptr )
cout << 'Pembolehubah penunjuk ch mempunyai nilai nol dengan rujukan alamat ke-0' << endl ;
lain
cout << 'Pembolehubah penunjuk ch bukan nilai nol ia mempunyai beberapa nilai dengan rujukan alamat' << endl ;
kembali 0 ;
}

Dalam kod di atas, kami menggunakan dua nullptrs dan membandingkannya antara satu sama lain. Kemudian kami menggunakan penunjuk aksara untuk mengesahkan nullptr .







Pengeluaran



Sebab untuk Menggunakan nullptr dalam C++

Penunjuk nol sering digunakan dalam pengaturcaraan C++ untuk beberapa sebab:



1: Memulakan Penunjuk

Apabila pembolehubah penunjuk diisytiharkan, ia hendaklah sentiasa dimulakan dengan lokasi memori yang sah atau a penunjuk nol . Apabila penuding diakses kemudian dalam kod, ini membantu untuk mengelakkan tingkah laku yang tidak diisytiharkan.





2: Kod Ralat

Fungsi mungkin kembali penunjuk nol sebagai kod ralat untuk menunjukkan bahawa mereka tidak dapat menyelesaikan tindakan yang ditentukan atau memperuntukkan memori.

3: Mengesahkan Kesahihan Penunjuk

Mengesahkan kesahihan penunjuk sebelum membatalkan rujukan sentiasa merupakan idea yang bijak. Ini meningkatkan keteguhan kod dan membantu dalam mencegah kegagalan masa jalan yang tidak dijangka.



4: Polimorfisme

Dalam C++, penunjuk kelas asas yang tidak menunjuk kepada mana-mana objek kelas terbitan diwakili oleh penunjuk nol . Ini biasanya digunakan dalam pengaturcaraan polimorfik untuk mengendalikan ciri berorientasikan objek seperti pewarisan dan fungsi maya.

Penunjuk nol tidak boleh dikelirukan dengan penunjuk yang tergantung atau tidak dimulakan, adalah penting untuk mengingati perkara ini. Penunjuk yang tidak dimulakan boleh menunjuk ke mana-mana alamat dalam ingatan kerana ia belum dimulakan dengan nilai. Penunjuk menjuntai, sebaliknya, ialah penunjuk yang merujuk kepada kawasan memori yang tidak sah atau sudah diuntukkan. Dalam pengaturcaraan C++, penunjuk berjuntai dan penunjuk yang tidak dimulakan kedua-duanya berpotensi mengakibatkan masalah masa jalan.

Kelebihan Menggunakan nullptr dalam C++

Terdapat beberapa faedah menggunakan a nullptr .

1: Keselamatan

Kerana nullptr adalah lebih selamat jenis daripada NULL, ia harus digunakan sebaliknya. Walaupun NULL hanya ditakrifkan sebagai pemalar integer dengan nilai sifar, nullptr ialah literal penunjuk yang hanya boleh ditukar kepada jenis penunjuk dan bukan kepada jenis lain.

2: Kebolehgunaan

Dalam pengaturcaraan C++, terdapat banyak cara untuk menggunakan penunjuk nol . Untuk memulakan penunjuk, hantar parameter ke fungsi panggilan, atau mengembalikan nilai penuding daripada fungsi, sebagai contoh, adalah beberapa kemungkinan penggunaannya. Ia juga boleh digunakan untuk menentukan sama ada panggilan fungsi atau tindakan menghasilkan nilai penunjuk yang sah.

3: Peruntukan Memori Dinamik

Peruntukan memori dinamik adalah antara kegunaan a penunjuk nol . Menggunakan operator baharu dalam C++, peruntukan memori dinamik dicapai. Apabila menggunakan kaedah baharu, penunjuk kepada objek yang baru dijana dikembalikan. Jika peruntukan gagal atas apa jua sebab, seperti tidak mempunyai memori yang mencukupi, NULL dihantar semula. Oleh itu, adalah penting untuk mengesahkan nilai pulangan sebelum menggunakan penunjuk untuk memastikan bahawa peruntukan itu berjaya.

Kesimpulan

The penunjuk nol ialah idea utama dalam pengaturcaraan C++ yang memberikan mekanisme untuk menunjukkan bahawa alamat dalam ingatan hilang. Pembangun boleh menghalang ranap perisian dan isu lain dengan menggunakan penunjuk nol untuk memastikan bahawa aplikasi mereka tidak cuba mengakses alamat memori yang salah. Jadi, adalah penting untuk pengaturcara memahami caranya penunjuk nol harus digunakan dan melakukannya dengan cekap dalam program mereka.