Funzionante di memcpy
Memcpy copia i byte di dati per byte dall'array di origine all'array di destinazione. Questa copia di dati è threadSafe. Il processo di copia dei dati può fallire se la dimensione data non è accurata per l'array di destinazione. Ad un certo punto, i comportamenti della funzione Memcpy () diventano indefiniti a seconda della condizione. A volte, gli oggetti si sovrappongono e c'è un puntatore nullo in una delle due posizioni, sorgente o destinazione.
Sintassi di Memcpy
# memcpy (destinazione vuota, sorgente vuota const, conteggio delle dimensioni);Qui, la destinazione e l'origine sono le posizioni da cui vengono copiati i contenuti e su quale luogo vengono copiati. Il terzo parametro mostra il numero di byte che devono essere copiati. Il valore di ritorno da questa funzione Build_in è la posizione dell'array di destinazione.
Implementazione della funzione Memcpy ()
Esempio 1
Questo esempio contiene la copia dei dati dall'origine alla parte di destinazione. Innanzitutto, dobbiamo utilizzare due librerie e un file di intestazione nel nostro codice sorgente. Uno è la libreria iostream che consente CIN e COUT nei programmi C ++ e utilizza efficacemente il coinvolgimento dell'utente. Ma, in questo programma, dobbiamo solo visualizzare i valori risultanti; Ecco perché dobbiamo menzionarlo. La seconda libreria utilizzata è la libreria che consente la copia dei dati dall'origine alla destinazione. Questa copia e allocazione della memoria vengono eseguite attraverso una libreria chiamata cstring. Quindi, per realizzare il programma in uno stato di lavoro, includeremo prima queste due librerie nel file di intestazione.
#includereTutte le funzionalità di stringa o array di caratteri vengono eseguite utilizzando una libreria cstring. Nel programma principale, vengono inizializzati due array di caratteri. Uno è un array di origine e l'altro è l'array di destinazione. Entrambi questi array sono pieni di dati che dobbiamo copiare. In questo codice, copriremo tutti i dati di un array su un altro. Tutti i byte saranno duplicati nell'array di destinazione poiché i dati vengono copiati byte da byte. Qui, entrambi gli array hanno dati.
Potrebbe esserci una possibilità, quando copiamo byte da un array a un altro e quando l'array di destinazione è vuoto. Questi tipi di esempi saranno discussi più avanti nell'articolo.
Per ora, useremo la funzione Memcpy per prendere le matrici di origine e di destinazione come parametro e la dimensione della sorgente da copiare facilmente.
Memcpy (destinazione, sorgente, dimensione di (sorgente));Il terzo parametro determinerà la dimensione dell'array di caratteri sorgente. Quindi, utilizzare l'istruzione Cout per visualizzare il contenuto nell'array di destinazione.
Usiamo sempre un compilatore per compilare. Quindi, eseguire il codice, quindi usiamo G++. Il "-o" salverà l'output del codice presente all'interno del file di input.
$ g ++ -o mem mem.CL'array di origine contiene "suggerimento Linux" dal valore risultante e la destinazione ha "articolo". Ora, l'array di destinazione contiene i dati dell'array di origine.
Esempio 2
Questo esempio funzionerà sullo stesso fenomeno, ma copriremo i dati dall'origine alla destinazione fino a un limite specifico. Ad esempio, l'array di caratteri di origine contiene gli stessi dati di "Linux Suggerimento" e l'array di destinazione ha "Memcpy". Quindi dobbiamo copiare i dati dalla destinazione all'origine di 4 byte. A tale scopo, menzioneremo il numero di byte come parametro. Durante la copia del numero specifico di byte, i dati nell'array di destinazione verranno sostituiti da quelli del file di origine.
Memcpy (destinazione, fonte, 4);Qui, non abbiamo bisogno di calcolare le dimensioni dell'array di origine. Solo un numero deve essere menzionato dove vogliamo copiare i dati.
Vedrai che i 4 byte dall'origine sono copiati alla destinazione. Ad esempio, "Linux" da "Linux suggerisce" viene estratto e copiato nell'array di destinazione. Mentre, nell'array di destinazione, i primi 4 byte vengono rimossi e vengono sostituiti attraverso i byte dell'array di origine. Il resto dei byte nell'array di destinazione rimarrà lo stesso.
Esempio 3
In questo esempio, avremo valori interi nell'array di origine. Questa volta, una matrice di fonti di dimensioni specifiche è definita per archiviare i dati in una certa misura. Come abbiamo accennato in precedenza, i dati della fonte verranno copiati ora nell'array vuoto. Successivamente, dichiareremo un array di destinazione di una dimensione specifica. Nell'esempio seguente, abbiamo menzionato la dimensione dell'array come 7, il che significa che copriremo 7 numeri interi nell'array di destinazione:
Int Destination [7];Ora utilizzeremo la funzione Memcpy per copiare i valori interi di 7 numeri per evitare il duplicatore di interi dati dal file di origine. Qui useremo la destinazione, l'array di origine e la dimensione totale dell'array intero moltiplicato per 7 per calcolare la dimensione effettiva:
# Memcpy (destinazione, fonte, sizeof (int) * 7);Successivamente, visualizzeremo i dati utilizzando un loop "per", a differenza degli esempi precedenti. Poiché ogni numero viene separato attraverso l'indice di un array, quindi ogni indice contiene un valore separato. A per loop continuerà a ripetere fino alla settima posizione. Ora, salva il codice per la compilation.
Di conseguenza, vengono copiati 7 numeri interi. Questo contiene un totale di 10 byte:
Esempio 5
Nell'ultimo esempio, abbiamo copiato i valori interi nell'array vuoto. Qui, copriremo i caratteri dall'array di origine del personaggio all'array di caratteri di destinazione vuota.
Innanzitutto, inizializza l'array di origine con la stringa. Durante l'introduzione dell'array di caratteri di destinazione, dichiara solo le dimensioni dell'array e mantienilo vuoto. Applicare la stessa funzione Memcpy per copiare il contenuto dell'array di origine nel file di destinazione. Abbiamo applicato un limite per copiare i dati, come abbiamo fatto prima. Quindi vogliamo trasferire dati di 9 byte, poiché abbiamo preso le dimensioni dell'array di destinazione come 10.
Memcpy (destinazione, sorgente, dimensione di (char)*9);Poiché la dimensione viene applicata all'array, useremo un ciclo per visualizzare il contenuto dell'array di destinazione dei caratteri. Ciò visualizzerà i valori presenti in ciascun indice dell'array di destinazione. I dati della sorgente fino al 9 ° byte, incluso lo spazio, sono mostrati di seguito:
Conclusione
L'articolo "C ++ Memcpy" è una fonte di conoscenza relativa alla funzione integrata nel linguaggio di programmazione C ++ che si occupa della copia dei dati da un array a un altro array. Ci sono molte possibilità nella copia dei dati da un array due altri. Questi sono spiegati con l'aiuto di esempi per rimuovere qualsiasi ambiguità sull'uso della funzione Memcpy (). Speriamo che tu abbia trovato questo articolo utile. Controlla gli altri articoli di suggerimento Linux per ulteriori suggerimenti e tutorial.