Übergabe von arrays an Funktionen



  • Hallo ich habe folgendes Problem:

    #include <iostream>
    using  namespace std;
    
    void function(char test[500])
    {
      cout << test;
    }
    
    int main()
    {
    	char arg[500] = "Hallo Welt";
    	function(arg);
    	return 0;
    }
    

    Ich will ein komplettes Array mit "Call by Value" an eine Funktion übergeben.
    (Ich weiß das es nicht toll ist soviel zu kopieren, Pointer wäre besser.
    Aber es ist ein Versuch)

    Also ich habe 2 Breakpoints, einer in der bei "funtion(arg);" und einer in der Funktion selber.
    Bei dem 1. Breakpoint ist "arg" vom Typ "char[500]".
    Beim 2. ist die Variable "test" aber vom Typ "char *", also ein Zeigertyp.
    Es sollte aber auch vom Typ "char [500] sein.

    Wiso ist das so? und wie kann ich ein array richtig übergeben?



  • Arrays können nicht by value übergeben werden

    siehe google: Array Call by Value Funktion C++

    warum das so ist erklärt sich einfach wenn man weiß wie intern ein Array betrachtet wird [] sind nur äbkürzungen für Zeigerarithmetik



  • Ovaron schrieb:

    Wiso ist das so? und wie kann ich ein array richtig übergeben?

    Wieso? Du übergibst es doch richtig. Arrays funktionieren bei Funktionsparametern etwas anders als normale Parameter. Dh du hast keine Kopie, sondern das ursprüngliche Array selbst. Brauchst du auch noch den korrekten Typ, dann solltest du es mal mit Referenzen probieren

    void function(char (&test)[500])
    

Anmelden zum Antworten