Anfängerfrage Variablen durch Funktion verändern



  • Also ich habe eine vllt sehr dämliche Anfängerfrage. Ich möchte, dass eine Funktion eine Variable außerhalb der Funktion verändert. Wenn ich dass so schreibe funktioniert dass nicht:

    void funktion(){
           k = 5;
       }
    
       int main(){
       int k = 0;
       funktion();
       }
    

    Wie macht man das generell wenn man mit einer Funktion auf "externe" Variablen zugreifen möchte?

    Liebe Grüße


  • Mod

    So?

    void funktion(int& k){
       k = 5;
    }
    
    int main(){
       int k = 0;
       funktion(k);
    }
    


  • Ah vielen Dank! Das mit dem int& habe ich noch nicht gewusst!



  • Stichwort: Referenz



  • Noch ein Stichwort zu dem du dich etwas informieren solltest: Gültigkeitsbereich von Variablen



  • Das laesst sich auch mit einem Pointer bewerkstelligen. Vor allem nuetzlich, wenn man eine Funktion manchmal benutzen will, um eine Wert zu aendern und manchmal nicht. Dem Pointer kann man dann auch NULL uebergeben.



  • Oder auch so:

    int funktion(int k){ 
       k = 5; 
    } 
    
    int main(){ 
       int k = 0; 
       k = funktion(k); 
    }
    


  • deejey schrieb:

    Oder auch so:

    int funktion(int k){ 
       k = 5; 
    } 
      
    int main(){ 
       int k = 0; 
       k = funktion(k); 
    }
    

    ne



  • cvcv schrieb:

    deejey schrieb:

    Oder auch so:

    int funktion(int k){ 
       k = 5; 
    } 
      
    int main(){ 
       int k = 0; 
       k = funktion(k); 
    }
    

    ne

    Warum nicht?



  • Das return fehlt.

    int funktion()
    { 
    	return 5;
    } 
    
    int main()
    { 
    	int k = 0; 
    	k = funktion();
    }
    


  • ach so, stimmt 😋



  • Ich hänge meine nächste Frage einfach mal hier an damit ich das Forum mit meinen Anfängerfragen nicht so vollspame!

    Ich will über cin einen string s einlesen. Das soll eine ISBN Nummer sein. Wie kann ich nun überprüfen lassen, ob der eingelesene string s z.B. die Form "xxx-xxx-k" hat? Wobei x Zahlen sind und k ein Buchstabe?



  • regex



  • seppinobis schrieb:

    Ich hänge meine nächste Frage einfach mal hier an damit ich das Forum mit meinen Anfängerfragen nicht so vollspame!

    Ich will über cin einen string s einlesen. Das soll eine ISBN Nummer sein. Wie kann ich nun überprüfen lassen, ob der eingelesene string s z.B. die Form "xxx-xxx-k" hat? Wobei x Zahlen sind und k ein Buchstabe?

    http://www.cplusplus.com/reference/regex/regex_match/

    kenn allerdings deine Kenntnisse in regular-expressions nicht



  • leider null Kenntnisse! 😞
    Naja dann versuch ich mich da Mal reinzulesen!



  • https://regex101.com/

    Der Fall ist ja noch sehr simpel, das kannst du dir schon selber irgendwie zusammen frickeln.



  • seppinobis schrieb:

    Ich will über cin einen string s einlesen. Das soll eine ISBN Nummer sein. Wie kann ich nun überprüfen lassen, ob der eingelesene string s z.B. die Form "xxx-xxx-k" hat? Wobei x Zahlen sind und k ein Buchstabe?

    Also willst Du eigentlich eine ISBN einlesen. Dann mach das auch!
    Warum der Umweg über den String?



  • Ich würde es so machen:

    int _tmain (int argc, _TCHAR* argv[])
    {
    	string s = "012-395-B";
    
    	bool ok = (s.length () == 9);
    	if (ok)
    	{
    		for (unsigned int i = 0; i < 9; ++i)
    		{
    			char ch = s[i];
    
    			if (i < 3 || (i > 3 && i < 7))
    				ok = (isdigit (ch) != 0);
    			else if (i == 3 || i == 7)
    				ok = (ch == '-');
    			else if (i == 8)
    				ok = (isalpha (ch) != 0);
    			else
    				ok = false;
    
    			if (!ok)
    				break;
    		}
    	}
    
    	if (!ok)
    		cout << "Wrong Format!!!" << "\n";
    	else
    		cout << "Format correct!!!" << "\n";
    
    	cout << "\n" << "Press Ctrl+c" << "\n";
    
    	char gugus;
    	cin >> gugus;
    
    	return 0;
    }
    


  • Danke für eure Antworten! Habt mir geholfen!

    @FurbleWurble: Ja ISBN ist hier nur ein Beispiel. Mir geht es mehr um die Allgemeine Herangehensweise!


Log in to reply