Memmove() σε C και C++

Memmove Se C Kai C



Σήμερα, θα μάθουμε μια από τις σημαντικές συναρτήσεις της γλώσσας C και C++ που είναι η συνάρτηση memmove(). Αλλά πριν από αυτό, ας ρίξουμε μια γρήγορη ματιά στα βασικά των γλωσσών C και C++. Θα συζητήσουμε επίσης ποιες είναι οι συναρτήσεις και στις δύο γλώσσες C/C++.

Η γλώσσα προγραμματισμού C είναι εύκολη και αρκετά αποτελεσματική για όλους τους σκοπούς. Η εφαρμογή λογισμικού όπως το λειτουργικό σύστημα Windows, οι βάσεις δεδομένων, οι διερμηνείς και άλλα εργαλεία είναι δυνατή με αυτό. Η C είναι μια εξαιρετική γλώσσα για αρχάριους για να μάθουν την κωδικοποίηση. Αυτός είναι ο λόγος για τον οποίο ο προγραμματισμός C είναι γνωστός ως η μητρική γλώσσα, καθώς χρησιμεύει ως το θεμέλιο για όλες τις άλλες γλώσσες υπολογιστών. Η βάση της γλώσσας προγραμματισμού C++ βασίζεται στις ιδέες του αντικειμενοστρεφούς προγραμματισμού (OOP). Ο χρήστης μπορεί να αναπτύξει και να κατανοήσει εύκολα τις αρχές του προγράμματος, καθώς η C++ έχει σαφή δομή. Η γλώσσα προγραμματισμού C\C++ είναι εξαιρετικά ευέλικτη στην εκτέλεση πολλαπλών λειτουργιών και στην εναλλαγή μιας μεταβλητής από τον έναν τύπο στον άλλο. Η συνάρτηση memmove() είναι μία από τις συναρτήσεις του C/C++.







Η συνάρτηση memmove() μεταφέρει 'nuum' bytes ταυτόχρονα από τα περιεχόμενα του μπλοκ μνήμης που υποδεικνύεται από την πηγή προς τη θέση που υποδεικνύεται από τον προορισμό. Η συνάρτηση memmove() είναι ωφέλιμη μόνο όταν τα αντικείμενα προέλευσης και προορισμού επικαλύπτονται και εμποδίζει την εμφάνιση της απροσδιόριστης συμπεριφοράς. Για να μάθετε περισσότερα σχετικά με τη συνάρτηση memmove(), ας σκάψουμε βαθιά και ας δούμε πώς να εφαρμόσουμε τη σύνταξη και τα παραδείγματα στη συνάρτηση memmove().



Σύνταξη:

Εδώ είναι το ίδιο στυλ γραφής και η υλοποίηση της συνάρτησης memmove() και για τις γλώσσες C και C++. Αρχικά, γράφουμε τη λέξη-κλειδί 'void' που σημαίνει ότι εάν η συνάρτηση δεν επιστρέψει καμία τιμή, γράφουμε το όνομα της συνάρτησης που θέλουμε να υλοποιήσουμε και η οποία είναι η συνάρτηση memmove(). Στις αγκύλες συναρτήσεων, γράφουμε τον προορισμό, ώστε να μπορούμε να τοποθετήσουμε τα byte 'num' με τη λέξη-κλειδί 'void'. Στη συνέχεια, γράφουμε την τοποθεσία πηγής από όπου παίρνουμε τα «αριθμά» byte.







Παράμετροι:

χέρι: Διεύθυνση στη θέση αποθήκευσης στην οποία αντιγράφονται τα δεδομένα.

src: Διεύθυνση στη θέση αποθήκευσης από την οποία αντιγράφονται τα δεδομένα.



μετρώ: Ποσότητα δεδομένων προς αντιγραφή από την πηγή στον προορισμό.

Αξία επιστροφής:

Σε αντάλλαγμα, παίρνουμε τη διεύθυνση στην περιοχή μνήμης στόχου. Το Dest επιστρέφεται από τη συνάρτηση memmove().

Παράδειγμα 1: Υλοποίηση της συνάρτησης Memmove() στο C

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

#include
#include

int main ( )
{
χαρ κεφ1 [ ] = { 'ΜΕΓΑΛΟ' , 'Εγώ' , 'n' , 'σε' , 'Χ' } ;

int μήκος = μέγεθοςof ( κεφ1 ) / μέγεθος του ( κεφ1 [ 0 ] ) ;

printf ( 'Πριν από την εφαρμογή της συνάρτησης memmove():' ) ;
Για ( ενθ Εγώ = 0 ; Εγώ < μήκος; i++ )
{
printf ( '%ντο' , κεφ.1 [ Εγώ ] ) ;
}

απανθρακώνω * ch2 = & κεφ1 [ δύο ] ;
memmove ( ch2, ch1, sizeof ( απανθρακώνω ) * δύο ) ;

printf ( ' \n \n Μετά την εφαρμογή της συνάρτησης memmove(): ' ) ;

Για ( ενθ Εγώ = 0 ; Εγώ < 5 ; i++ )
{
printf ( '%c' , κεφ.1 [ Εγώ ] ) ;
}
ΕΠΙΣΤΡΟΦΗ 0 ;

}


Ξεκινάμε πάντα με την ενσωμάτωση των βασικών μονάδων του προγράμματος μετά την εκκίνηση του μεταγλωττιστή. Αυτές οι ενότητες είναι οι ομαδοποιημένες ενότητες γλώσσας C. Χρειάζεται απλώς να πληκτρολογήσουμε μία γραμμή κώδικα για να συμπεριλάβουμε αυτές τις μονάδες, σε αντίθεση με δεκάδες γραμμές κώδικα για την κατασκευή της ενότητας. Η ένδειξη «#» ενημερώνει τον μεταφραστή να φορτώσει πρώτα τη λειτουργική μονάδα πριν χρησιμοποιήσει τη λέξη-κλειδί «συμπερίληψη» για να προσθέσει τη μονάδα στο πρόγραμμα. Η ενότητα 'stdio.h' σημαίνει ότι ο μεταγλωττιστής δέχεται τα δεδομένα από τον χρήστη και τα εμφανίζει στον χρήστη. Η δεύτερη ενότητα του προγράμματος είναι '#include ' ώστε να μπορούμε να χρησιμοποιήσουμε τις συναρτήσεις που σχετίζονται με τη συμβολοσειρά στο υπάρχον πρόγραμμα.

Στη συνέχεια, ξεκινάμε τη συνάρτηση main() ώστε να μπορούμε να γράψουμε την πραγματική γραμμή κώδικα που θέλουμε να εφαρμόσουμε στο πρόγραμμα. Στη γραμμή 6, δηλώνουμε το όνομα του πίνακα χαρακτήρων 'ch1' τύπου χαρακτήρα. Στη συνέχεια, του εκχωρούμε μια τιμή χαρακτήρα. Μετά από αυτό, υπολογίζουμε το μήκος του 'ch1' και εκτυπώνουμε τον πίνακα εισόδου 'ch1' χρησιμοποιώντας τον βρόχο 'for'.

Μετά από αυτό, δηλώνουμε τον δείκτη στον πίνακα 'ch2' ενός χαρακτήρα τύπου και εκχωρούμε τη διεύθυνση του πίνακα 'ch1' στον πίνακα 'ch2'. Στη συνέχεια, το εκτυπώνουμε χρησιμοποιώντας την πρόταση printf(). Ας δούμε την έξοδο της προηγούμενης εικόνας:

Παράδειγμα 2: Υλοποίηση της συνάρτησης Memmove() στη C++

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

Μετά το άνοιγμα του μεταγλωττιστή, ξεκινάμε πάντα συμπεριλαμβάνοντας τα αρχεία κεφαλίδας που είναι απαραίτητα για τη γλώσσα προγραμματισμού C++ για την εκτέλεση των προγραμμάτων. Για να κατασκευάσουμε το πρόγραμμα και να χρησιμοποιήσουμε τη μέθοδο memmove(), συμπεριλαμβάνουμε πρώτα τα δύο θεμελιώδη αρχεία κεφαλίδας – «iostream» και «cstring». Η C++ παρέχει διάφορους τρόπους εργασίας με πίνακες και συμβολοσειρές. Αυτές οι λειτουργίες είναι διαθέσιμες για χρήση όταν το αρχείο κεφαλίδας περιλαμβάνεται σε ένα πρόγραμμα με το αρχείο κεφαλίδας '#include  ' που χρησιμοποιείται για την αντιγραφή ενός συγκεκριμένου αριθμού byte δεδομένων από την πηγή στον προορισμό. Το αρχείο κεφαλίδας '#include '  χρησιμοποιείται τόσο για την είσοδο όσο και για την έξοδο των δεδομένων από τον χρήστη. Στη συνέχεια, χρησιμοποιούμε το τυπικό «namespace std» στον κώδικά μας για να χρησιμοποιήσουμε την τυπική σύνταξη της γλώσσας προγραμματισμού C++, ώστε να μπορούμε να αποτρέψουμε τα αντικείμενα, τις μεθόδους και τις παραμέτρους να αναφέρονται στο ίδιο εύρος σε ολόκληρο το πρόγραμμα.

#include
#include
χρησιμοποιώντας namespace std?

int main ( )
{
char src [ πενήντα ] = '1234567890' ;
char dest [ πενήντα ] = '0987654321' ;

cout << 'Πριν από την εφαρμογή memmove στον προορισμό: ' << αρχή << endl;
memmove ( dest, src, 6 ) ;
cout << 'Μετά την εφαρμογή του memmove στον προορισμό: ' << χέρια

ΕΠΙΣΤΡΟΦΗ 0 ;
}


Αρχίζουμε να γράφουμε τη συνάρτηση main() για να ξεκινήσουμε την εκτέλεση μιας πραγματικής γραμμής κώδικα. Στη γραμμή 7, υπάρχει ένας πίνακας τύπου δύο χαρακτήρων μήκους 50 που δηλώνεται ως 'src[50]' και 'dest[50]'. Χρησιμοποιούμε τη δήλωση 'cout' για να εκτυπώσουμε το μήνυμα, 'Πριν την εφαρμογή του memmove() στον προορισμό: '. Στη συνέχεια, περνάμε την παράμετρο “dest” για να εκτυπώσουμε την τιμή του πίνακα “dest”. Στη συνέχεια, η συνάρτηση memmove() εφαρμόζεται στη μεταβλητή τύπου χαρακτήρων που δηλώνεται ως 'src[50]' και 'dest[50]' για να επικαλύπτεται ο συγκεκριμένος αριθμός byte από την αρχή(src) στον στόχο(dest) με το αριθμός «καταμέτρησης». Αυτό προσδιορίζει τον αριθμό των byte που αντιγράφονται από το 'src' στο 'dest'. Όπως μπορείτε να δείτε στην παρακάτω εικόνα, δηλώσαμε τον αριθμό μέτρησης «6».

Μετά από αυτό, χρησιμοποιούμε ξανά τη δήλωση 'cout' για να εμφανίσουμε το μήνυμα, 'After Applying memmove() στον προορισμό: ' και μεταβιβάζουμε τη μεταβλητή 'dest' πίνακα τύπου 'character'. Για να σταματήσουμε την εκτέλεση του προγράμματος, πρέπει να χρησιμοποιήσουμε μια δήλωση επιστροφής στο τέλος του προγράμματος. Στη συνέχεια, επιστρέφουμε το 0 στην κύρια συνάρτηση, υποδεικνύοντας ότι το πρόγραμμα εκτελέστηκε με επιτυχία και πέτυχε τον στόχο του.

Μπορείτε να δείτε στην ακόλουθη έξοδο της μεθόδου memmove() ότι εάν υπάρχει επικάλυψη, για παράδειγμα, όταν ο αρχικός δείκτης μετακινείται στο γράμμα 6, ο δείκτης συνεχίζει να εκτυπώνει και οι ακόλουθοι χαρακτήρες θα επικαλύπτονται. Αυτό το απόσπασμα κώδικα C++ εκτελέστηκε και τα αποτελέσματα εμφανίζονται στην παρακάτω εικόνα:

συμπέρασμα

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