Announcement

Collapse
No announcement yet.

Anfänger: Array zurückgeben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfänger: Array zurückgeben?

    Hallo!

    Ich schreibe eigentlich in C# oder Java und muss nun was in C++ (nix managed!) machen! ...

    Jedenfalls habe ich in einer Klasse ein int-Array mit 256 Werten und will dieses von einer Methode zurückgeben lassen! Schön wäre sowas wie <PRE>const int[]& frequencys() const;</PRE> aber das geht ja irgendwie nicht! Gibt es denn nur die Möglichkeit einen Zeiger auf das erste Element zurückzugeben oder kann ich das Array als solches zurückgeben???

    DANKE - Bav!

  • #2
    Gibt es denn nur die Möglichkeit einen Zeiger auf das erste Element zurückzugeben

    ja

    kann ich das Array als solches zurückgeben???

    nei
    Christian

    Comment


    • #3
      Möglichkeit wäre eine Stuktur (o. Template)<br>
      zu definieren welches die Anfangsadresse<br>
      des Arrays in der einen Variable und die<br>
      Anzahl der Elemente (wenn unbekannt)<br>
      in der anderen enthält.<br>
      mfG
      <pre>
      typedef struct int_arr_mit_anz{
      int arr[];
      int anz;
      };
      </pre&gt

      Comment


      • #4
        hi bavarian,<p>
        du koenntest auch die erste stelle des arrays, fuer die anzahl der folgenden elemente nutzen.<p>
        wenn das wegen zu grosser aenderungen im source, nicht in frage kommt,<br>
        kann man auch einen trick benutzen, der mit arrays als funktionsparameter moeglich ist.<br>
        <pre>
        #include <stdio.h>
        //
        int* frequencys(int[]);

        /////////////////////////////////////////////////////////////////////////
        int main(int argc, char* argv[])
        {
        int iCount; //ein zaehler
        int *frequencyArray; //die anfangsadresse des arrays
        int arrayHeap[1]; //anzahl der elemente des arrays
        //
        frequencyArray = frequencys(arrayHeap);
        //
        printf("amount of array elements = %d\n", arrayHeap[0]);
        //
        for(iCount = 0; iCount < arrayHeap[0]; iCount++)
        printf("%d\n", frequencyArray[iCount]);
        //
        return 0;
        }
        /////////////////////////////////////////////////////////////////////////
        int* frequencys(int arrayHeap[])
        {
        static int intArray[5];
        //
        intArray[0] = -56;
        intArray[1] = 56;
        intArray[2] = 256;
        intArray[3] = 1024;
        intArray[4] = 2147483647;
        //
        arrayHeap[0] = sizeof(intArray)/sizeof(int);
        //
        return intArray;
        }
        </pre>
        die funktion gibt sozusagen mehr als einen wert zurueck.<p>
        gruss roy

        Comment

        Working...
        X