Übergabe eines Arrays an eine Funktion



  • Hallo.

    ich möchte gerne ein Array an eine Funktion übergeben. Könntet Ihr mir sagen, wie das geht?

    int main ()
    {
    int VAL[6];
    
    function(VAL);
    
    return 0;
    }
    

    Vielen Dank.
    H.W.



  • glaube so:

    int array[6];
    
    void funktion(int a[]){
    
    ....
    }
    
    funktion(array);
    


  • Ja, so klappt es. Geht das auch mit 'nicht arrays', ohne die return-Funktion zu nutzen?

    also irgendwie so:

    void Funktion (int var[],int j)
    {
    	for (int i=0;i<6;i++)
    		var[i] = i;	
    
    	j=0;
    }
    
    int main()
    {
    	int INT[6],i;
    
    	for (int i=0;i<6;i++)
    		INT[i] = 0;
    
    	Funktion(INT,&i);
    
    	return 0;
    }
    


  • Hallo

    void Funktion (int var[], int j) // Warum j als Parameter, wenn du es nie in der Funktion benutzt?
    {
        for (int i=0;i<6;i++) 
            var[i] = i;   
    
        j=0; // Unnötig, weil die Variable J nach dem Ende der Funktion eh nicht mehr existiert
    }
    
    int main()
    {
        int INT[6],i; // Gibt deinen Variablen sinnvolle Namen.
    
        for (int i=0;i<6;i++)
            INT[i] = 0;
    
        Funktion(INT,&i); // Hier übergibst du mit dem & die Adresse von i, nicht den Wert
    
        return 0;
    }
    

    Vermutlich meinst du das so :

    void Funktion (int array[], const int size)
    {
      for (int i=0;i<size;i++) 
        array[i] = i;   
    }
    
    int main()
    {
      const int arraysize = 6;
      int array[arraysize];
    
      for (int i=0;i<arraysize;i++)
        array[i] = 0;
    
      Funktion(array, arraysize);
      return 0;
    }
    

    bis bald
    akari



  • HI Akari,

    leider habe ich mich wahrscheinlich nicht deutlich ausgedrückt. Ich wollte den Parameter j in der Funktion schon benutzen, und ich weis auch, dass, wenn ich ihn auf 0 setze, dies auf die winmain-Funktion keinen Einfluss hat. Aber genau das wollte ich ja ändern! Ich möchte gerne den Parameter in der Funktion modifizieren und diese Änderung soll auch in winmain Gültigkeit haben, ohne dass ich die return-Anweisung dafür nutze. Dafür muss ich glaube ich die Adresse von j und nicht j selber übergeben, oder?

    Danke.
    H.W.



  • Hallo

    dann hast du das & nur an der falschen Stelle gesetzt 😉
    Minimalbeispiel (weil ich den Zusammenhang zwischen j und der Arraygröße nicht sehe) :

    void Funktion(int& value) // & besagt hier, Übergabe als Adresse, nicht Wert, siehe Referenz
    {
      value = 20; 
    }
    
    ...
    int test = 10;
    Funktion(test);
    // test hat nun den Wert 20, nicht mehr 10
    

    bis bald
    akari



  • Hans Wurst schrieb:

    Dafür muss ich glaube ich die Adresse von j und nicht j selber übergeben, oder?

    jo, das geht über pointer oder referenz

    void a (int *x)
    {
      *x = ...; // verändern
    }
    
    void b (int &x)
    {
      x = ...; // verändern
    }
    
    ...
    int c, d;
    a (&c);
    b (d);
    ...
    

Anmelden zum Antworten