Passa la stringa per riferimento in C ++

Passa la stringa per riferimento in C ++
Il riferimento C ++ è un nome per una variabile che esiste già. Un riferimento a una variabile non può essere modificato per fare riferimento all'altra variabile una volta inizializzata. Puntatori o riferimenti possono essere passati come parametri alle funzioni in C++. Pertanto, il risultato è identico in entrambe le circostanze. Il passaggio per riferimento consente a una funzione di aggiornare una variabile senza creare una copia. Dobbiamo dichiarare variabili di riferimento in modo che il parametro e la variabile siano passati per condividere la stessa posizione di memoria. Eventuali modifiche che si verificano nel parametro influiscono anche sulla variabile.

Con l'aiuto di esempi, capiremo C ++ che passa per approccio di riferimento e come fornire i puntatori come argomenti alle funzioni in questo articolo. I parametri passati per funzionare come puntatori sono uguali a qualsiasi altro valore quando si supera un valore per riferimento. Di conseguenza, è necessario fornire tipi di punta per gli argomenti della funzione, come nella funzione swap (), che scambia i valori di varie variabili interari affrontate dai loro argomenti.

Esempio 1: programma di passaggio per riferimento senza puntatori in C++

Qui, passiamo un valore per riferimento senza utilizzare la dichiarazione del puntatore. Di seguito è riportato il programma di illustrazione per passare una variabile per riferimento.

Inizialmente, abbiamo incluso i file di intestazione per l'implementazione del programma nella sezione di intestazione. Nel passaggio successivo, abbiamo una definizione di funzione per lo scambio di valori. La funzione viene fornita uno swap di nome e la funzione prende due referenze variabili String come parametro. Le variabili della stringa applicheranno la funzione di swap sono definite come stringhe di riferimento "STR1" e "STR2".

Quindi, nella funzione, abbiamo creato una "temp" variabile che abbiamo superato la variabile "STR1". Successivamente, lo "STR2" è assegnato a "STR1" e quindi "STR2" ha "STR2". In questo modo, l'algoritmo di swap viene applicato alla stringa di riferimento.

Abbiamo la nostra funzione principale in cui due stringhe sono dichiarate come "str_a" e "str_b" e inizializzate con alcuni valori di stringa. I valori della stringa verranno stampati prima che venga applicata la funzione di swap. Quindi, abbiamo invocato la funzione di swap nella funzione principale e passato la stringa definita nella funzione principale. Dopodiché, la stringa scambiata verrà stampata.

#includere
Utilizzo dello spazio dei nomi std;
void swap (String & Str1, String & Str2)
String Temp;
temp = str1;
str1 = str2;
str2 = temp;

int main ()

String str_a = "c ++", str_b = "programmazione";
cout<< "Strings Before swapping" <cout<< "string 1 : " <cout<< "String 2 : " <swap (str_a, str_b);
cout<< "\nStrings After swapping" <cout<< "string 1 : " <cout<< "string 2 : " <restituzione 0;

Il risultato mostra la stringa prima dello scambio e dopo lo scambio attraverso la stringa di riferimento passata nella funzione.

Esempio 2: programma di passaggio per riferimento con puntatori in C++

Come nell'esempio precedente, abbiamo visto solo la stringa di passaggio per riferimento. Pertanto, useremo i puntatori per riferimento in C ++ in questo esempio.

Il programma inizia creando una funzione rappresentata con il nome "Swapstring" e passa le stringhe a due pover come argomento. Quindi, abbiamo definito la funzione principale del programma. Nella funzione principale, le due stringhe sono denominate rispettivamente "STR1" e "STR2". Queste variabili di stringa sono inizializzate con la stringa di parole.

Quindi, abbiamo chiamato la funzione "Swapstring", a cui vengono passate le variabili di stringa "STR1" e "STR2". Le stringhe verranno scambiate in questa definizione della funzione nella funzione principale e stampate. Successivamente, abbiamo chiamato la funzione "swapstring" al di fuori della funzione principale per lo scambio di stringhe specificate.

#includere
Utilizzo dello spazio dei nomi std;
void swapstring (string*, string*);
int main ()

String str1 = "Hello", str2 = "amici";
cout<< "Strings Before swapping" <cout<< "Str1 = " << str1 <cout<< "Str2 = " << str2<Swapstring (& STR1, & STR2);
cout<< "\nStrings After swapping" <cout<< "str1 = " << str1 <cout<< "str2 = " << str2 <restituzione 0;

void swapstring (string* s1, string* s2)
String Temp;
temp = *s1;
*s1 ​​= *s2;
*s2 = temp;

Quindi, i risultati del passaggio di riferimenti a stringa con puntatori sono mostrati nella seguente grafica.

Esempio 3: programma di passaggio di stringa di passaggio per riferimento in c++

Anche se una funzione non riesce a modificare l'oggetto stringa di origine nel programma di chiamata, passare gli oggetti stringa C ++ tramite riferimento è abbastanza comune. Gli oggetti sono generalmente abbastanza grandi e quindi possono essere costosi rispetto alla quantità di archiviazione che usano e al tempo necessario per costruirne un clone quando li si supera il valore. Quindi, in generale, il passaggio di oggetti per riferimento risparmia sia la memoria che il tempo.

L'unico svantaggio di passare un oggetto tramite riferimento è che può alterare l'oggetto sorgente che è stato passato alla funzione. Questo non è desiderato. Se non vogliamo aggiornare un oggetto nella funzione, preferiremmo renderlo difficile.

Abbiamo una definizione di funzione nel seguente programma come "InputString", a cui abbiamo superato il riferimento delle stringhe. Quindi, abbiamo dichiarato un oggetto stringa "mystr" nella funzione principale e la stringa oggetto "mystr" contiene una stringa di una parola.

Dopodiché, abbiamo chiamato un "inputstring" e abbiamo superato questo oggetto stringa in esso. Abbiamo una definizione di funzione "InputString" al di fuori della funzione principale, che crea un nuovo riferimento di oggetti stringa da "Mystr". La nuova stringa è definita come "Newstr" e quindi inizializzata nel corpo della funzione. Abbiamo modificato la stringa oggetto "Newstr" e stampato il nuovo oggetto stringa.

#includere
#includere
usando std :: cout;
usando std :: endl;
usando std :: string;
void inputString (String &);
int main ()

string mystr = "wel";
cout<< "String value: " <InputString (Mystr);
cout<< "String value now :" <restituzione 0;

void inputString (String & Newstr)

cout<< "String value in function :" <Newstr = Newstr + "Come";
cout<< "String value now in function :" <

Il grafico seguente rappresenta i valori di stringa risultante della stringa di origine e la stringa modificata.

Esempio 4: programma di passaggio di un oggetto stringa costante per riferimento in c++

Il compilatore lancerà un errore se viene passato un riferimento all'oggetto costante. Possiamo affrontare questo problema utilizzando un riferimento variabile costante. Ciò impedisce la variabile a cui i punti di riferimento vengono modificati.

Innanzitutto, abbiamo la definizione della funzione "DisplayString", in cui viene passato un riferimento a stringa costante. Le stringhe costanti sono definite e inizializzate nella funzione principale come "STR1" e "STR2". Successivamente, passa queste stringhe costanti alla funzione "InputString". Invocato la funzione al di fuori della funzione principale in cui abbiamo dichiarato una variabile di stringa costante "Mystr".

#includere
#includere
usando std :: cout;
usando std :: endl;
usando std :: string;
void DisplayString (const String &);
int main ()

const string str1 = "infinix";
stringa str2 = "iPhone";
cout<< "str1 :" << str1 <DisplayString (STR1);
cout<< "str2 : " << str2 <DisplayString (STR2);
restituzione 0;

void DisplayString (const String & Mystr)

cout<< "MyStr : " <

Un oggetto non costante viene passato a una funzione tramite un riferimento a oggetti costanti. Quindi non otteniamo errori di compilation nel codice.

Conclusione

I riferimenti consentono a una funzione di influire sul valore di un argomento, che può essere utile in alcune situazioni. I riferimenti const, al contrario, assicurano che la funzione non cambi l'argomento. Pertanto, abbiamo concluso l'articolo qui con la dimostrazione di esempio in C ++ e speriamo che possa essere utile.