Τι είναι το nullptr στη C++

Ti Einai To Nullptr Ste C



Στη C++, μια συγκεκριμένη τιμή δείκτη που ονομάζεται a μηδενικός δείκτης χρησιμοποιείται για να υποδείξει ότι ένας δείκτης δεν αναφέρεται σε κάποια έγκυρη θέση μνήμης. Στο πρότυπο C++11 ή μεταγενέστερο, αντιπροσωπεύεται από τη λέξη-κλειδί ' nullptr ” ή με τη σταθερή τιμή του 0.

ο μηδενικός δείκτης Η ιδέα είναι ζωτικής σημασίας επειδή βοηθά στην αποτροπή εσφαλμένων προσβάσεων στη μνήμη, οι οποίες μπορεί να οδηγήσουν σε απροσδόκητα σφάλματα χρόνου εκτέλεσης και αστοχίες λογισμικού. Εξετάστε το σενάριο όταν ένα πρόγραμμα προσπαθεί να διαβάσει ή να γράψει σε μια διεύθυνση μνήμης που είτε δεν έχει δημιουργηθεί είτε έχει ήδη εκχωρηθεί. Αυτή η συμπεριφορά είναι απροσδιόριστη στη C++ και μπορεί να οδηγήσει σε σοβαρά ζητήματα χρόνου εκτέλεσης ή ελαττώματα ασφαλείας. Ένας δείκτης δεν είναι έγκυρος και δεν πρέπει να αποαναφερθεί εάν συνδέεται με μηδενική τιμή. Τερματισμοί προγραμμάτων, σφάλματα τμηματοποίησης ή μη εξουσιοδοτημένες προσβάσεις στη μνήμη είναι μερικά μόνο παραδείγματα απροσδόκητης συμπεριφοράς που μπορεί να συμβεί κατά την κατάργηση αναφοράς μηδενικός δείκτης .

Παράδειγμα nullptr σε C++

#include
χρησιμοποιώντας χώρο ονομάτων std ;
ενθ κύριος ( )
{
nullptr_t pi1, pi2 ;
αν ( pi1 >= pi2 )
{
cout << 'Ο δείκτης 1 είναι μεγαλύτερος από την τιμή του δείκτη 2' << endl ;
}
αλλού
{
cout << 'Ο δείκτης 2 είναι μεγαλύτερος από την τιμή του δείκτη 1' << endl ;
}
απανθρακώνω * κεφ = pi1 ;
αν ( κεφ == nullptr )
cout << 'Η μεταβλητή δείκτη ch έχει μηδενική τιμή με 0η αναφορά διεύθυνσης' << endl ;
αλλού
cout << 'Η μεταβλητή δείκτη ch δεν είναι μηδενική τιμή, έχει κάποια τιμή με αναφορά διεύθυνσης' << endl ;
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Στον παραπάνω κώδικα, χρησιμοποιούμε δύο nullptrs και συγκρίνοντάς τα μεταξύ τους. Στη συνέχεια, χρησιμοποιούμε τον δείκτη χαρακτήρων για την επικύρωση του nullptr .







Παραγωγή



Λόγοι για να χρησιμοποιήσετε το nullptr στη C++

Μηδενικοί δείκτες χρησιμοποιούνται συχνά στον προγραμματισμό C++ για διάφορους λόγους:



1: Αρχικοποίηση δεικτών

Όταν δηλώνεται μια μεταβλητή δείκτη, θα πρέπει πάντα να αρχικοποιείται με μια έγκυρη θέση μνήμης ή a μηδενικός δείκτης . Όταν ο δείκτης προσεγγίζεται αργότερα στον κώδικα, αυτό βοηθά στην αποτροπή μη δηλωμένης συμπεριφοράς.





2: Κωδικός σφάλματος

Οι λειτουργίες ενδέχεται να επιστρέψουν μηδενικούς δείκτες ως κωδικοί σφάλματος που δείχνουν ότι δεν μπόρεσαν να ολοκληρώσουν την καθορισμένη ενέργεια ή να εκχωρήσουν μνήμη.

3: Επαλήθευση της εγκυρότητας του δείκτη

Η επαλήθευση της εγκυρότητας του δείκτη πριν από την κατάργηση της αναφοράς είναι πάντα μια έξυπνη ιδέα. Αυτό αυξάνει την ευρωστία του κώδικα και βοηθά στην αποφυγή απροσδόκητων αστοχιών χρόνου εκτέλεσης.



4: Πολυμορφισμός

Στη C++, οι δείκτες βασικής κλάσης που δεν δείχνουν σε κανένα αντικείμενο παράγωγων κλάσεων αντιπροσωπεύονται από μηδενικούς δείκτες . Αυτό χρησιμοποιείται συνήθως στον πολυμορφικό προγραμματισμό για τη διαχείριση αντικειμενοστρεφών χαρακτηριστικών όπως η κληρονομικότητα και οι εικονικές συναρτήσεις.

Μηδενικοί δείκτες Δεν πρέπει να συγχέεται με δείκτες που κρέμονται ή δεν έχουν αρχικοποιηθεί, είναι ζωτικής σημασίας να το θυμάστε αυτό. Οι μη αρχικοποιημένοι δείκτες μπορούν να δείχνουν σε οποιαδήποτε διεύθυνση στη μνήμη, καθώς δεν έχουν αρχικοποιηθεί με μια τιμή. Οι κρεμασμένοι δείκτες, από την άλλη πλευρά, είναι εκείνοι που αναφέρονται σε μη έγκυρες ή ήδη εκχωρημένες περιοχές μνήμης. Στον προγραμματισμό C++, οι κρεμασμένοι δείκτες και οι μη αρχικοποιημένοι δείκτες έχουν και οι δύο τη δυνατότητα να οδηγήσουν σε προβλήματα χρόνου εκτέλεσης.

Πλεονεκτήματα της χρήσης nullptr στη C++

Υπάρχουν πολλά οφέλη από τη χρήση του α nullptr .

1: Ασφάλεια

Επειδή nullptr είναι πιο ασφαλές για τον τύπο από το NULL, θα πρέπει να χρησιμοποιηθεί αντ' αυτού. Ενώ το NULL ορίζεται απλώς ως μια ακέραια σταθερά με την τιμή μηδέν, nullptr είναι ένας κυριολεκτικός δείκτης που μπορεί να μετατραπεί μόνο σε τύπο δείκτη και όχι σε οποιονδήποτε άλλο τύπο.

2: Ευχρηστία

Στον προγραμματισμό C++, υπάρχουν πολλοί τρόποι χρήσης του μηδενικός δείκτης . Για να αρχικοποιήσετε δείκτες, να στείλετε παραμέτρους σε κλήσεις συναρτήσεων ή να επιστρέψετε τιμές δείκτη από συναρτήσεις, ως παραδείγματα, είναι μερικές από τις πιθανές χρήσεις του. Μπορεί επίσης να χρησιμοποιηθεί για να προσδιοριστεί εάν μια κλήση ή μια ενέργεια συνάρτησης απέδωσε μια νόμιμη τιμή δείκτη.

3: Δυναμική εκχώρηση μνήμης

Η δυναμική εκχώρηση μνήμης είναι μια από τις πιο δημοφιλείς χρήσεις του α μηδενικός δείκτης . Χρησιμοποιώντας τον νέο τελεστή στη C++, ολοκληρώνεται η δυναμική εκχώρηση μνήμης. Κατά την κλήση της νέας μεθόδου, επιστρέφεται ένας δείκτης στο πρόσφατα δημιουργημένο αντικείμενο. Εάν η εκχώρηση αποτύχει για οποιονδήποτε λόγο, όπως η έλλειψη αρκετής μνήμης, το NULL αποστέλλεται πίσω. Κατά συνέπεια, είναι σημαντικό να επαληθεύσετε την επιστρεφόμενη τιμή πριν χρησιμοποιήσετε τον δείκτη για να βεβαιωθείτε ότι η κατανομή ήταν επιτυχής.

συμπέρασμα

ο μηδενικός δείκτης είναι μια βασική ιδέα στον προγραμματισμό της C++ που δίνει έναν μηχανισμό για να δείξει ότι λείπει μια διεύθυνση στη μνήμη. Οι προγραμματιστές μπορούν να αποτρέψουν σφάλματα λογισμικού και άλλα ζητήματα χρησιμοποιώντας μηδενικούς δείκτες για να βεβαιωθείτε ότι οι εφαρμογές τους δεν προσπαθούν να αποκτήσουν πρόσβαση σε εσφαλμένες διευθύνσεις μνήμης. Επομένως, είναι απαραίτητο για τους προγραμματιστές να κατανοήσουν πώς μηδενικούς δείκτες πρέπει να χρησιμοποιούνται και να το κάνουν αποτελεσματικά στα προγράμματά τους.