Διαφορά μεταξύ strlen() και sizeof() για συμβολοσειρά στο C
Τι είναι το strlen()
Η strlen() είναι μια συνάρτηση για την εύρεση του μήκους μιας συμβολοσειράς. Μετρά τους συνολικούς χαρακτήρες που παρουσιάζονται σε μια συμβολοσειρά, εξαλείφοντας τον μηδενικό χαρακτήρα. Ο συνολικός αριθμός χαρακτήρων στη συμβολοσειρά περιλαμβάνει αλφάβητα, ειδικούς χαρακτήρες και αριθμούς, με κενά κενά.
Τι είναι το sizeof()
Η sizeof() είναι μια συνάρτηση που χρησιμοποιείται για τον υπολογισμό του μεγέθους του τελεστή της. Επιστρέφει το μέγεθος μιας συγκεκριμένης μεταβλητής. Αυτή η συνάρτηση μπορεί να εφαρμοστεί σε οποιονδήποτε τύπο δεδομένων, που περιέχει πρωτόγονους τύπους όπως ακέραιος και τύπους δείκτη, τύπους κινητής υποδιαστολής, δομή ή ένωση. Η έξοδος του προγράμματος που περιέχει sizeof() μπορεί να είναι διαφορετική στο σύστημα 32-bit και στο σύστημα 64-bit.
ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ
- Η μέθοδος Strlen χρησιμοποιείται για την εύρεση του μήκους ενός πίνακα, ενώ η μέθοδος sizeof() χρησιμοποιείται για την εύρεση του πραγματικού μεγέθους των δεδομένων.
- Η Strlen() μετράει τους αριθμούς των χαρακτήρων σε μια συμβολοσειρά ενώ η sizeof() επιστρέφει το μέγεθος ενός τελεστή.
- Η Strlen() αναζητά τη μηδενική τιμή της μεταβλητής αλλά η sizeof() δεν ενδιαφέρεται για την τιμή της μεταβλητής.
- Η επιστρεφόμενη τιμή στο strlen() είναι long int, ενώ η επιστρεφόμενη τιμή στο sizeof() είναι ανυπόγραφη int.
Σύνταξη του strlen()
strcount = strlen(my_string);
Εδώ, το my_string είναι μια μεταβλητή πίνακα χαρακτήρων.
Παράδειγμα strlen()
Στο παρακάτω πρόγραμμα C, έχουμε δηλώσει μεταβλητή συμβολοσειράς τύπου char. Η μεταβλητή Strng είναι ένα όρισμα της συνάρτησης strlen() για να βρεθεί το μήκος του κορδόνι.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
Παραγωγή:
Length of given string is: 7
Σύνταξη του sizeof()
Σύνταξη 1)
μέγεθος(τύπος): Τύπος= αναφερόμενος τύπος
Παράδειγμα sizeof(type):
Στον παρακάτω κώδικα, το &type δίνει τη διεύθυνση της μεταβλητής (διπλό x). Αυξάνεται με 1 που δίνει τη διεύθυνση όπου μπορείτε να αποθηκεύσετε την επόμενη μεταβλητή τύπου x.
Με τη μετάδοση του x σε char* και τη λήψη της διαφοράς θα μπορείτε να γνωρίζετε τον συνολικό αριθμό των μεταβλητών τύπου char που είναι αποθηκευμένες στη μνήμη. Χρησιμοποιήσαμε getchar() για να διαβάσουμε χαρακτήρα.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
παραγωγή:
8
Σύνταξη 2)
sizeof(variable-name): Variable-name= όνομα της μεταβλητής που θέλετε να καθορίσετε το μέγεθος.
Στο παρακάτω πρόγραμμα C, εκτυπώνουμε τον τύπο δεδομένων μεγέθους char. Η δήλωση Printf περιέχει συνάρτηση sizeof με όρισμα char.
Παράδειγμα sizeof(variable-name):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
Παραγωγή:
sizeof(char) = 1
Σύνταξη 3)
sizeof(έκφραση): Έκφραση= Έκφραση που πρέπει να αξιολογήσετε.
Παράδειγμα sizeof(expression):
Στο παρακάτω πρόγραμμα, πρώτα υπολογίζουμε και εκτυπώνουμε το μέγεθος της μεταβλητής. Μετά από αυτό, αξιολογούμε την έκφραση, την αποθηκεύουμε στη μεταβλητή a και εμφανίζουμε το αποτέλεσμα σε δήλωση printf.
#include<stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %d\n",sizeof(p)); printf("Size of an expression : %d\n",sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %d\n",sizeof(a)); return 0; }
Παραγωγή:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Διαφορά μεταξύ strlen() και sizeof()
Εδώ είναι οι σημαντικές διαφορές μεταξύ strlen() και sizeof():
Strlen() | Μέγεθος του() |
---|---|
Η Strlen() είναι μια προκαθορισμένη συνάρτηση, η οποία ορίζεται σε ένα αρχείο κεφαλίδας γνωστό ως string.h. | Το Sizeof() είναι ένας μοναδικός τελεστής ή έκφραση χρόνου μεταγλώττισης που υπολογίζει την ποσότητα της μνήμης που καταλαμβάνεται από ένα μεταβλητή. |
Αυτή η μέθοδος χρησιμοποιείται για την εύρεση του μήκους μιας σειράς συμβολοσειράς ή χαρακτήρων. | Αυτή η μέθοδος χρησιμοποιείται για την εύρεση του πραγματικού μεγέθους των δεδομένων (που έχουν εκχωρηθεί) σε byte. |
Μετρά τους αριθμούς των χαρακτήρων σε μια συμβολοσειρά εξαλείφοντας τις μηδενικές τιμές. | Επιστρέφει το μέγεθος ενός τελεστή, όχι το μήκος συμβολοσειράς (συμπεριλαμβανομένων των μηδενικών τιμών). |
Κατανέμει μνήμη κατά το χρόνο εκτέλεσης και αναζητά τη μηδενική τιμή της μεταβλητής. | Η Sizeof() δεν ενδιαφέρεται για την τιμή της μεταβλητής. |
Η συνάρτηση Strlen() λειτουργεί μόνο με συμβολοσειρές χαρακτήρων | Η συνάρτηση Sizeof() επιστρέφει την ποσότητα μνήμης που έχει εκχωρηθεί σε byte. |
Η τιμή επιστροφής στο strlen() είναι long int. | Η τιμή επιστροφής στο sizeof() είναι ανυπόγραφη int. |
Υπάρχει μόνο μία σύνταξη της strlen() η οποία είναι int strlen(const char *str); | Υπάρχουν τρεις συντάξεις sizeof() 1) sizeof(type), 2) sizeof(variable-name) και 3) sizeof(expression): |