1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Array als Rückgabewert

Discussion in 'Programmieren' started by manuel.k, Dec 26, 2006.

Thread Status:
Not open for further replies.
  1. manuel.k

    manuel.k Byte

    Guten Abend,
    ich habe da eine Frage zu C++ wie bekomm ich aus einer function ein Array als Rückgabewert?

    wäre für schnelle Hilfe sehr Dankbar!
     
  2. AData

    AData Byte

    Also ich weis nicht wie es in C++ ist aber in Delphi muss man einen Typ deklarieren, der ein Array ist. Dann gibt man in der Funktion den Rückgabewert vom ArrayTyp.

    Gruß Alexander
     
  3. Muddi

    Muddi Megabyte

    In C könnte ich mir das so vorstellen:
    Code:
    ...
    int array[10];
    ...
    
    int funktion()
    { 
         int i;
         for (i = 0; i < 10; i++)
               return array[i];
    }
     
  4. Michi0815

    Michi0815 Guest

    was soll den das werden wenns fertig ist :confused:

    ich würds mal so versuchen...
    Code:
    struct array {int a[3];};
    
    void funktion (struct array * pa) {
    	pa->a[0]=1;
    	pa->a[1]++;
    	pa->a[2]--;
    }
    
    
    void main (void) {
    	struct array a, *pa;
    
    	pa = &a;
    	a.a[0]=15;
    	a.a[1]=5;
    	a.a[2]=3;
    
    	funktion(pa);
    
    	printf("Array-Werte: %d %d %d\n", a.a[0], a.a[1], a.a[2]);
    }
     
  5. Muddi

    Muddi Megabyte

    Also noch einmal ausführlich:

    Code:
    #include <stdio.h> /*fehlt übrigens in deinem Code, printf() ist dort deklariert*/
    
    int array[3]; /*deklariert ein Array mit 3 Werten*/
    
    int funktion(); /*deklariert eine Funktion*/
    
    main()
    {
        int i;
        for (i = 0; i < 3; i++) /*ruft die funktion dreimal auf*/
            funktion();
    
        for (i = 0; i < 3; i++)
            printf("Arraywerte: %d\n", array[i]; /*druckt alle Werte des arrays*/
    }
    
    int funktion(int i)
    {
        array[0] = 123456; /*weist irgendwas zu*/
        array[1] = 234534;
        array[2] = 2334;
       
        for (i = 0; i < 3; i++) /*übergibt die drei Werte des arrays an main()*/
            return array[i];
    }
     
    Oder verwechsele ich hier Arrays mit Vektoren? :grübel:

    Ich weiß, ich liebe for-Schleifen:D
     
  6. Michi0815

    Michi0815 Guest

    vektoren sind spezialfälle von arrays ;)

    zu dem beispiel...
    auch ausführlicher wirds nicht sinnvoller.
    das problem ist genau in dem konstrukt:

    in dem augenblick in dem der 1. (=nullte) wert an return übergeben wird ist die funktion beendet.

    return macht genau das was dasteht: es "kehrt zurück" zur aufrufenden instanz und übergibt so nebenbei noch den wert von array[0].

    nur so als beispiel:

    Code:
    void x (void) {
        print("hallo\n");
        machwaslustiges();
        return;
        print("das wird nie ausgegeben!!!\n");
    }
    mal ganz abgesehen davon das es nur genau EINEN returnwert geben kann (von welchen typ der auch immer ist)
     
  7. Muddi

    Muddi Megabyte

    Stimmt, ziemlicher Schrott.;)
    Das müsste jetzt aber Sinn machen:

    Code:
    #include <stdio.h>
    
    int funktion(int);
    
    main()
    {
    	int i;
    	
    	printf("Arraywerte:");
    	for (i = 0; i < 3; i++) /*3 Aufrufe jedesmal ein anderer Rückgabewert*/
    		printf(" %d", funktion(i));
    
    	printf("\n");
    }
    int funktion(int i)
    {
    	
    	int array[3];
    	array[0] = 4;
    	array[1] = 5;
    	array[2] = 6;
    	
    		return array[i];
    }
    		
    
    Jedenfalls sieht so der Output aus:
    Arraywerte: 4 5 6
     
Thread Status:
Not open for further replies.

Share This Page