logo

Jak předat řetězec funkci pomocí volání podle reference?

Předávání řetězce odkazem v různých programovacích jazycích zahrnuje použití specifických mechanismů nebo konstrukcí, které umožňují funkci přímo upravit původní řetězec, spíše než pracovat s kopií. Zde vysvětlím, jak toho dosáhnout v C++, C#, Pythonu a JavaScriptu.

Obsah



Jak předat řetězec funkci pomocí volání podle reference v C++

V C++ můžete předat řetězec odkazem pomocí „ &'> symbol v seznamu parametrů funkce. To vám umožní upravit původní řetězec přímo ve funkci.

Například:

C++








#include> #include> // using '&' symbol before the name of the string> void> modifyString(std::string& str)> {> >str =>'Modified string'>;> }> int> main()> {> >std::string myString =>'Original string'>;> >modifyString(myString);> >std::cout << myString> ><< std::endl;>// Output: 'Modified string'> >return> 0;> }>

>

Java třídí seznam
>

Výstup

Modified string>

Jak předat řetězec funkci pomocí Call by Reference v Javě

Řetězec nemůžete předat odkazem přímo, protože Java je jazyk pro předávání hodnot a řetězce jsou neměnné. Podobného efektu však můžete dosáhnout použitím proměnných datových struktur nebo zapouzdřením řetězce do vlastního objektu.

Použití proměnlivé datové struktury (StringBuilder)

Můžete použítStringBuilder>class, což je proměnlivá sekvence znaků, k úpravě objektu podobného řetězci a jeho předání funkci. Ačkoli to není striktně předávání řetězce odkazem, umožňuje vám to dosáhnout požadovaného efektu úpravy původního objektu podobného řetězci.

kroky:

  1. VytvořitStringBuilder>objekt s počátečním řetězcem.
  2. PředatStringBuilder>namítat funkci.
  3. UpravteStringBuilder>objekt ve funkci.
  4. Přístup k upravenému řetězci zStringBuilder>objekt po volání funkce.

Příklad:

Jáva




srovnatelný seznam

public> class> StringModificationExample {> >static> void> modifyString(StringBuilder strBuilder) {> >strBuilder.append(>' (Modified)'>);> >}> >public> static> void> main(String[] args) {> >StringBuilder myStringBuilder =>new> StringBuilder(>'Original String'>);> >modifyString(myStringBuilder);> >String myString = myStringBuilder.toString();> >System.out.println(myString);>// Output: 'Original String (Modified)'> >}> }>

>

>

Výstup

Original String (Modified)>

Jak předat řetězec funkci pomocí volání podle reference v C#

V C# můžete předat řetězec odkazem pomocí ' ref'> klíčové slovo v seznamu parametrů funkce. To vám umožní upravit původní řetězec přímo ve funkci.

Příklad:

C#


datum na řetězec



using> System;> class> Program {> >static> void> ModifyString(>ref> string> str) {> >str =>'Modified string'>;> >}> >static> void> Main() {> >string> myString =>'Original string'>;> >ModifyString(>ref> myString);> >Console.WriteLine(myString);>// Output: 'Modified string'> >}> }>

>

>

jaká je velikost mého monitoru
Výstup

Modified string>

Jak předat řetězec funkci pomocí Call by Reference v Pythonu

V Pythonu jsou řetězce neměnné, takže je nemůžete předat odkazem. Toto omezení však můžete obejít pomocí míjení měnitelná datová struktura, jako je a seznam a poté jej převést zpět na řetězec V případě potřeby.

Příklad:

Krajta




def> modify_string(string_list):> >string_list[>0>]>=> 'Modified string'> my_string_list>=> [>'Original string'>]> modify_string(my_string_list)> my_string>=> my_string_list[>0>]> print>(my_string)># Output: 'Modified string'>

>

>

Výstup

Modified string>

Jak předat řetězec funkci pomocí volání podle reference v JavaScriptu

V JavaScriptu můžete dosáhnout podobného efektu pomocí předání objektu s vlastností, která drží řetězec . Pak můžete upravit vlastnost ve funkci.

topologie

Příklad:

Javascript




function> modifyString(obj) {> >obj.str =>'Modified string'>;> }> const myObj = { str:>'Original string'> };> modifyString(myObj);> const myString = myObj.str;> console.log(myString);>// Output: 'Modified string'>

>

>

Výstup

Modified string>

V těchto programovacích jazycích můžete předávat řetězce odkazem (nebo podobným efektem) pomocí technik specifických pro daný jazyk. Je však nezbytné znát pravidla a datové struktury jazyka, protože neměnnost řetězců v Pythonu a JavaScriptu může ovlivnit váš přístup.