Μπορεί ο δείκτης κενού να αποαναφερθεί;

Αυτή είναι μια ερώτηση που απαντούν κατά καιρούς οι ειδικοί μας. Τώρα, έχουμε την πλήρη λεπτομερή εξήγηση και απάντηση για όλους όσους ενδιαφέρονται!

Ερώτηση από: Καθ. Tressa Mann
Βαθμολογία: 4,6/5(8 ψήφοι)

1) Οι κενοί δείκτες δεν μπορούν να αποαναφερθούν . Για παράδειγμα, το παρακάτω πρόγραμμα δεν μεταγλωττίζεται.

Πότε μπορεί να γίνει κατάργηση της αναφοράς του δείκτη κενού;

Πότε μπορεί να γίνει αποσύνδεση του δείκτη κενού; Εξήγηση: Με τη μετάδοση του δείκτη σε άλλο τύπο δεδομένων , μπορεί να αποαναφερθεί από τον δείκτη κενού.

Μπορεί να γίνει κατάργηση αναφοράς σε οποιονδήποτε δείκτη;

Εάν ο μεταγλωττιστής σας δώσει έναν δείκτη σε μια μεταβλητή ή συνάρτηση, μπορείτε να την αποαναφέρετε ελευθερώς (εφόσον η μεταβλητή δεν έχει καταστραφεί/κατανεμηθεί εν τω μεταξύ) και είναι πρόβλημα του μεταγλωττιστή αν π.χ. ένας συγκεκριμένος καταχωρητής τμήματος CPU πρέπει να αποκατασταθεί εκ των προτέρων ή να χρησιμοποιηθεί μια ξεχωριστή εντολή κώδικα μηχανής.

Γιατί μπορείτε να αποαναφέρετε έναν κενό δείκτη;

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

Μπορεί να διαγραφεί ο κενός δείκτης;

Ο δείκτης κενού είναι ένας δείκτης που δεν συσχετίζεται με κανέναν τύπο δεδομένων. ... Δεν είναι ασφαλές να διαγράψετε έναν κενό δείκτη στο C /C++ γιατί το delete πρέπει να καλεί τον καταστροφέα οποιουδήποτε αντικειμένου καταστρέφει και είναι αδύνατο να το κάνει αν δεν γνωρίζει τον τύπο.

Κατανόηση των κενών δεικτών

Βρέθηκαν 45 σχετικές ερωτήσεις

Μπορείτε να ελευθερώσετε έναν κενό δείκτη;

Ναι -- το free παίρνει έναν δείκτη για να ακυρωθεί , οπότε όταν το καλείτε, ο δείκτης μεταδίδεται (σιωπηρά) σε έναν δείκτη για να ακυρωθεί σε κάθε περίπτωση. Στο C είναι απολύτως ασφαλές, γιατί δεν υπάρχουν καταστροφείς για να καλέσετε. Το σύστημα μνήμης παρακολουθεί το μέγεθος των εκχωρήσεων.

Τι είναι η συνάρτηση διαγραφής C++;

Όταν η διαγραφή είναι χρησιμοποιείται για την κατανομή της μνήμης για ένα αντικείμενο κλάσης C++, ο καταστροφέας του αντικειμένου καλείται πριν από την ανάθεση της μνήμης του αντικειμένου (αν το αντικείμενο έχει καταστροφέα). Εάν ο τελεστής στον τελεστή διαγραφής είναι μια τροποποιήσιμη τιμή l, η τιμή του δεν ορίζεται μετά τη διαγραφή του αντικειμένου.

Τι δεν μπορούμε να κάνουμε με έναν δείκτη void *;

Επειδή ο δείκτης κενού χρησιμοποιείται μόνο για τη μετάδοση των μεταβλητών, οπότε αριθμητική δείκτη δεν μπορεί να γίνει σε κενό δείκτη.

Τι είναι ο δείκτης κενού;

Ένας κενός δείκτης είναι ένας δείκτης που δεν έχει συσχετισμένο τύπο δεδομένων με αυτόν . Ένας κενός δείκτης μπορεί να περιέχει διεύθυνση οποιουδήποτε τύπου και μπορεί να μεταδοθεί τυπογραφικά σε οποιονδήποτε τύπο. ... Μερικά Ενδιαφέροντα Γεγονότα: 1) Οι κενοί δείκτες δεν μπορούν να αποαναφερθούν. Για παράδειγμα, το παρακάτω πρόγραμμα δεν μεταγλωττίζεται.

Τι απαιτείται για την αποαναφορά του δείκτη κενού;

Δεν μπορείτε να αποαναφέρετε έναν κενό δείκτη επειδή δεν έχει τύπο, πρώτα πρέπει να τον κάνετε μετάδοση (int *)lVptr και μετά αποαναφορά του *(int *)lVptr . Ένας δείκτης κενού είναι ακριβώς αυτό, ένας δείκτης σε ένα κενό (τίποτα δεν μπορεί να οριστεί).

Ποιος είναι ο σωστός τρόπος δήλωσης ενός δείκτη;

Εξήγηση: int *ptr είναι ο σωστός τρόπος για να δηλώσετε έναν δείκτη.

Τι συμβαίνει κατά την κατάργηση αναφοράς ενός δείκτη;

Ο τελεστής απόκλισης αναφοράς είναι επίσης γνωστός ως τελεστής έμμεσης κατεύθυνσης, ο οποίος αντιπροσωπεύεται από (*). Όταν ο τελεστής έμμεσης κατεύθυνσης (*) χρησιμοποιείται με τη μεταβλητή δείκτη, τότε είναι γνωστός ως αποαναφορά ενός δείκτη. Όταν παραπέμπουμε σε έναν δείκτη, τότε θα επιστραφεί η τιμή της μεταβλητής που δείχνει αυτός ο δείκτης.

Τι είναι ένας γενικός δείκτης;

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

ΤΙ ΕΙΝΑΙ Ο δείκτης NULL και ο δείκτης κενού;

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

Τι είναι το κενό * στο C;

Ο δείκτης κενού στο C είναι ένας δείκτης που δεν συσχετίζεται με κανένα τύπο δεδομένων . Δείχνει σε κάποια θέση δεδομένων στο μέσο αποθήκευσης δείχνει τη διεύθυνση των μεταβλητών. Ονομάζεται επίσης δείκτης γενικής χρήσης. Στο C, οι συναρτήσεις malloc() και calloc() επιστρέφουν void * ή γενικούς δείκτες. Έχει κάποιους περιορισμούς −

Τι είναι το μέγεθος του δείκτη κενού;

Το μέγεθος του δείκτη κενού διαφέρει από σύστημα σε σύστημα. Εάν το σύστημα είναι 16-bit, το μέγεθος του δείκτη κενού είναι 2 byte . Εάν το σύστημα είναι 32-bit, το μέγεθος του κενού δείκτη είναι 4 byte. Εάν το σύστημα είναι 64-bit, το μέγεθος του κενού δείκτη είναι 8 byte.

Μπορεί μια δομή να περιέχει δείκτη προς τον εαυτό της;

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

Πώς δημιουργείτε έναν κενό δείκτη;

Αποαναφορά ενός κενού δείκτη στο C

  1. #περιλαμβάνω
  2. int main()
  3. {
  4. int a=90;
  5. void *ptr;
  6. ptr=&a;
  7. printf('Τιμή που επισημαίνεται με δείκτη ptr : %d',*ptr);
  8. επιστροφή 0;

Ποια είναι η διαφορά μεταξύ ενός γενικού δείκτη και ενός κενού δείκτη;

Ένας κενός δείκτης δεν είναι παρά το αυτός που δεν έχει κανένα τύπο δεδομένων μαζί του . Ονομάζεται επίσης ως δείκτης γενικού σκοπού. Μπορεί να κρατήσει τις διευθύνσεις οποιουδήποτε τύπου δεδομένων.

Ο τύπος επιστροφής είναι άκυρος;

Οι ______________ έχουν τον τύπο επιστροφής void. Εξήγηση: Ο κατασκευαστής δημιουργεί ένα αντικείμενο και ο καταστροφέας καταστρέφει το αντικείμενο . Δεν πρέπει να επιστρέψουν τίποτα, ούτε καν άκυρα. ... Επεξήγηση: void θεμελιώδης τύπος χρησιμοποιείται στις περιπτώσεις α και γ.

Είναι κακοί οι δείκτες κενού;

Υπάρχει μόνο ένα μειονέκτημα, που είναι αυτό ο πολυμορφισμός που βασίζεται στο void * δεν είναι ασφαλής : μόλις πετάξετε έναν δείκτη στο void *, δεν υπάρχει τίποτα που να σας εμποδίζει να μεταφέρετε αυτό το void * σε λάθος τύπο δείκτη κατά λάθος. Οι μαθητές μου κάνουν αυτό το λάθος συχνά.

Μπορούμε να πληκτρολογήσουμε το void σε int;

3 Απαντήσεις. Επιστρέφετε την τιμή του int sum by ορίζοντας μια κενή διεύθυνση * σε αυτό . Σε αυτήν την περίπτωση, η διεύθυνση δεν είναι έγκυρη. Αλλά, αν το έχετε υπόψη σας και λάβετε την τιμή του αθροίσματος ρίχνοντας ένα κενό * για να το βάλετε, θα λειτουργήσει.

Χρειάζεται να διαγράψετε δείκτες C++;

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

Ποια είναι η διαφορά μεταξύ διαγραφής και διαγραφής στην C++;

Ποια είναι η διαφορά μεταξύ διαγραφής και διαγραφής[] στην C++; Εξήγηση: Το delete χρησιμοποιείται για τη διαγραφή ενός μεμονωμένου αντικειμένου που ξεκινά με τη χρήση νέας λέξης-κλειδιού ενώ το delete[] χρησιμοποιείται για τη διαγραφή μιας ομάδας αντικειμένων που έχουν ξεκινήσει με τον νέο τελεστή.

Η διαγραφή ενός δείκτη τον ορίζει ως μηδενικό;

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