» »

c++

c++

Loaded ::

Lp

Kako funkcija vrne polje elementov? Napišem samo return polje[velikost], ali v stavku for? Prosim za ponazoritev ...

Lp
Loadeed

snow ::

Prvo si prebereš PREBERI ME: označevanje topicov v oddelku programiranje in popraviš ime teme in tudi v prihodnje, ko odpiraš teme upoštevaš omenjeno temo.

Iz funkcije vrneš samo enkrat. Nato se procesiranje funkcije zaključi.

Polje vračaš preko pointerja na prvi element.
Mogoče je boljša rešitev s STL vsebnikom vector.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Matako ::

Najenostavnejša rešitev je z vračanjem kazalca, tako kot je omenil snow. Ker pa si ti omenil velikost polja, sem dodal še moj hitri primer, ki dela točno to, kar si ti hotel, se mi zdi. Vsebuje pa naslednje:

1.Strukturo Array, ki kao lahko shrani poljubno število elementov tipa MYTYPE, int konkretno. To ni razred, ampak struktura, čeprav ima konstruktor in destruktor. Lahko pa narediš class, če želiš.

2. Funkcijo foo(), ki naredi nek nov Array element, ga inicializira na nek način in "ga vrne" - to je, vrne kazalec nanj.

3. main(), ki vse to uporabi v primeru.


Ja vem, overkill.

#include <stdio.h>

#define MYTYPE int

struct Array {
       int size;
       MYTYPE *data;
       Array(int);
       ~Array();
};

Array::Array(int size)
{
    this->size = size;
    data = new MYTYPE[size];                                  
}

Array::~Array()
{
    delete [] data;
}


Array* foo(int n)
{
       // Dinam aloc. NE VRACAJ kazalcev na lok. spremenljivke!(ce prev. sploh dovoli)  
       Array *a = new Array(n);
       for (int i=0;i<n;i++)
           a->data[i] = i;
       return a;       
}

int main() {
    // primer funkcije, ki vrne nas objekt ...
    Array *a = foo(5);
    // izpisi vsebino nasega polja, bi moralo biti '01234'
    for (int i=0;i<a->size;i++)
        printf("%d", i);
    // sprosti pomnilnik
    delete a;
}

/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C - shranjevanje rezultatov iz baze v array

Oddelek: Programiranje
71220 (919) Randomness
»

[C] Funkcija vrnitev kazalca

Oddelek: Programiranje
101189 (905) MrStein
»

[C++] Ali je mogoče?

Oddelek: Programiranje
161622 (1098) Ciklamen
»

[C] struct in int[] (strani: 1 2 )

Oddelek: Programiranje
657331 (6404) MrBrdo
»

[C++] dinamično 2d polje

Oddelek: Programiranje
143260 (3097) bozjak

Več podobnih tem