Πώς να ελέγξετε το μηδέν στο C: 7 βήματα (με εικόνες)

Πίνακας περιεχομένων:

Πώς να ελέγξετε το μηδέν στο C: 7 βήματα (με εικόνες)
Πώς να ελέγξετε το μηδέν στο C: 7 βήματα (με εικόνες)

Βίντεο: Πώς να ελέγξετε το μηδέν στο C: 7 βήματα (με εικόνες)

Βίντεο: Πώς να ελέγξετε το μηδέν στο C: 7 βήματα (με εικόνες)
Βίντεο: Πώς μπορώ να μικρύνω το μέγεθος αρχείου εικόνας 2024, Ενδέχεται
Anonim

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

Βήματα

Μέρος 1 από 2: Εκτέλεση μηδενικού ελέγχου

Ελέγξτε το Null στο C Βήμα 1
Ελέγξτε το Null στο C Βήμα 1

Βήμα 1. Χρησιμοποιήστε τον τυπικό μηδενικό κωδικό ελέγχου

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

  • εάν (ptr == NULL)

    {

    // κωδικός εάν ο δείκτης είναι NULL

    } αλλο {

    // κωδικός αν όχι NULL

    }

Ελέγξτε το Null στο C Βήμα 2
Ελέγξτε το Null στο C Βήμα 2

Βήμα 2. Ελέγξτε για οποιαδήποτε τιμή εκτός από το NULL

Μερικές φορές είναι πιο βολικό να δοκιμάσετε ανισότητα αντ 'αυτού. Δεν υπάρχουν εκπλήξεις εδώ:

  • εάν (ptr! = NULL) {

    // κωδικός αν όχι NULL

    }

Ελέγξτε το Null στο C Βήμα 3
Ελέγξτε το Null στο C Βήμα 3

Βήμα 3. Γράψτε πρώτα το NULL για να αποφύγετε σφάλματα (προαιρετικά)

Το κύριο μειονέκτημα της μεθόδου PTR == NULL είναι η πιθανότητα να πληκτρολογήσετε κατά λάθος ptr = NULL, εκχωρώντας την τιμή NULL σε αυτόν τον δείκτη. Αυτό μπορεί να προκαλέσει μεγάλο πονοκέφαλο. Δεδομένου ότι ο έλεγχος για (μη) ισότητα αντιμετωπίζει τους τελεστέους συμμετρικά, μπορείτε να έχετε ακριβώς το ίδιο αποτέλεσμα γράφοντας εάν (NULL == ptr) αντι αυτου. Αυτό είναι πιο ανθεκτικό στα τυπογραφικά λάθη, αφού ένα τυχαίο NULL = ptr δημιουργεί ένα απλό σφάλμα μεταγλώττισης.

Αυτό φαίνεται λίγο αμήχανο σε ορισμένους προγραμματιστές, αλλά είναι απολύτως έγκυρο. Ποια προσέγγιση χρησιμοποιείτε εξαρτάται μόνο από τις προσωπικές προτιμήσεις και πόσο καλός είναι ο μεταγλωττιστής σας στην ανίχνευση του σφάλματος if (ptr = NULL)

Ελέγξτε το Null στο C Βήμα 4
Ελέγξτε το Null στο C Βήμα 4

Βήμα 4. Ελέγξτε εάν η μεταβλητή είναι αληθής

Ενα απλό αν (ptr) ελέγχει αν το ptr είναι ΑΛΗΘΙΝΟ. Θα επιστρέψει ΛΑΘΟΣ εάν το ptr είναι NULL ή εάν το ptr είναι 0. Η διάκριση δεν έχει σημασία σε πολλές περιπτώσεις, αλλά να γνωρίζετε ότι αυτά δεν είναι ίδια σε όλες τις αρχιτεκτονικές.

Το αντίστροφο είναι αυτό αν (! ptr), το οποίο θα επιστρέψει TRUE εάν το ptr είναι FALSE.

Μέρος 2 από 2: Αποφυγή λαθών

Ελέγξτε το Null στο C Βήμα 5
Ελέγξτε το Null στο C Βήμα 5

Βήμα 1. Ορίστε έναν δείκτη πριν ελέγξετε για NULL

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

  • Αποφύγετε αυτό το λάθος:

    char *ptr;

    εάν (ptr == NULL)

    {

    // Αυτό θα επιστρέψει FALSE. Ο δείκτης έχει εκχωρήσει μια έγκυρη τιμή.

    }

  • Αντ 'αυτού γράψτε:

    char *ptr = NULL; // Αυτό εκχωρεί τον δείκτη στο NULL

    εάν (ptr == NULL)

    {

    // Αυτό θα επιστρέψει TRUE εάν ο δείκτης δεν έχει εκχωρηθεί εκ νέου.

    }

Ελέγξτε το Null στο C Βήμα 6
Ελέγξτε το Null στο C Βήμα 6

Βήμα 2. Δώστε προσοχή σε λειτουργίες που θα μπορούσαν να επιστρέψουν NULL

Εάν μια συνάρτηση μπορεί να επιστρέψει NULL, σκεφτείτε αν αυτό είναι πιθανό και αν αυτό θα προκαλέσει προβλήματα αργότερα στον κώδικά σας. Ακολουθεί ένα παράδειγμα της λειτουργίας malloc χρησιμοποιώντας τον μηδενικό έλεγχο (αν (ptr)) για να διασφαλιστεί ότι χειρίζεται μόνο δείκτες με έγκυρες τιμές:

  • int * ptr = malloc (N * sizeof (int));

    αν (ptr) {

    int i?

    για (i = 0; i <N; ++ i)

    ptr = i;

    }

Ελέγξτε το Null στο C Βήμα 7
Ελέγξτε το Null στο C Βήμα 7

Βήμα 3. Κατανοήστε ότι το NULL είναι 0, αλλά πρέπει πάντα να χρησιμοποιείτε το NULL αντί για 0 όταν εργάζεστε με δείκτες για λόγους σαφήνειας

Ιστορικά, το C αντιπροσώπευε το NULL ως τον αριθμό 0 (δηλαδή, 0x00). Στις μέρες μας μπορεί να γίνει λίγο πιο περίπλοκο και ποικίλλει ανάλογα με το λειτουργικό σύστημα. Μπορείτε συνήθως να ελέγξετε για NULL χρησιμοποιώντας ptr == 0, αλλά υπάρχουν γωνιακές περιπτώσεις όπου αυτό μπορεί να προκαλέσει πρόβλημα. Moreσως το πιο σημαντικό, η χρήση του NULL καθιστά προφανές ότι εργάζεστε με δείκτες για άλλα άτομα που διαβάζουν τον κώδικά σας.

Συμβουλές

Μπορείτε να χρησιμοποιήσετε αυτό το check -in ενώ βρόχους όπως και κάθε άλλο: ενώ (NULL == ptr) {

Συνιστάται: