Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako f-iji predati pokazivac na niz cijelih brojeva?

[es] :: C/C++ programiranje :: Kako f-iji predati pokazivac na niz cijelih brojeva?

[ Pregleda: 5052 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MixMaster

Član broj: 10076
Poruke: 323
195.66.174.*



+32 Profil

icon Kako f-iji predati pokazivac na niz cijelih brojeva?29.12.2004. u 21:20 - pre 233 meseci
Kako da f-iji predam pokazivac na niz cijelih brojeva? (Usput, kako da predam i cio niz?)

Zar ne moze ovako (za pokazivac)...
Code:

#include <...h>
int neka_fija(int *[]); /* dakle prototip */

void main()             /* u glavnoj f-iji zauzimamo memoriju za niz X...*/

         {
          int *X, n;
          . . .
          X=(int *)malloc(n*sizeof(int));          
          . . .
          printf("Izlaz f-ije neka_fija je %d", neka_fija(X));
         }

int neka_fija(int *niz)
             {
              . . .
              return Y;
              }

Za predavanje citavog niza...u prototipu ide (int []), a u definiciji (int niz[]), jeli tako?

Hvala unaprijed.
Vidi bako, DžEDAJ!
 
Odgovor na temu

Sylvester
Beograd

Član broj: 14212
Poruke: 449
*.yubc.net.



+17 Profil

icon Re: Kako f-iji predati pokazivac na niz cijelih brojeva?29.12.2004. u 22:12 - pre 233 meseci
Sam identifikator niza predstavlja pokazivac na isti, tako da bi potpis funkcije izgledao ovako:

Code:
tip naziv_fje (tip niz[]);


a njeno telo:

Code:
tip naziv_fje (tip niz[]) {
  // telo funkcije
}


I jos nesto... pri alokaciji memorije za niz ne moras da primenjujes eksplicitnu konverziju tipa, nego jednostavno ovako:

Code:
niz = malloc (n * sizeof (tip));


poz ;)

edit: Mislim da se funkciji ne moze predati ceo niz, nego samo pokazivac na njega.

[Ovu poruku je menjao Sylvester dana 29.12.2004. u 23:15 GMT+1]
 
Odgovor na temu

blaza
n/a

Član broj: 961
Poruke: 743
*.yu1.net.



+3 Profil

icon Re: Kako f-iji predati pokazivac na niz cijelih brojeva?29.12.2004. u 22:14 - pre 233 meseci
Funkciji niz uvek predajes po adresi (ili po referenci u C++). Funkcija mora znati i duzinu niza, da ne bi otisla u komsijsko dvoriste.
Duzinu niza mozes predati funkciji kao argument.
Drugi nacin je upotreba konstantne vrednosti koja definise duzinu niza (#define MAX_NIZ 100 iliti const int MAX_NIZ 100;).
Treci nacin je da duzinu niza definisemo sadrzajem elemenata niza (npr. elemenat sa sadrzajem 0 oznacava kraj).
Itd...
Samo ime niza bez sredjnih zagrada je adresa niza, odnosno adresa prvog elementa niza.
Znaci, u deklaraciji je dovoljno da stoji
Code:
 int neka_fija(int*);
, a
u definiciji
Code:
int neka_fija(int* X){
}


Analogno, mozes pisati:
Code:
 
int neka_fija(int []);
, a
u definiciji
Code:
int neka_fija(int X[]){
}


Mozda ovo pomogne:
Code:
int x[100];
int* p = x;
int* q = &x[0];
/*p i q sadrze istu adresu*/


Ovo takodje:
Code:
int main(int argc, char* argv[]){return 0}
/*je isto sto i*/
int main(int argc, char** argv){return 0}

O_o
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Kako f-iji predati pokazivac na niz cijelih brojeva?30.12.2004. u 15:02 - pre 233 meseci
Cini mi se da tebi treba nesto ovako:
Code:
//Windows 2000, Dev-Cpp 4.9.9.1
#include <stdio.h>
#include <stdlib.h>

void neka_funkcija(int j, int* b){
    // j je potreban da bi tvoja f-ja znala koliko je niz velik 
    int i;
    // a sada tvoja f-ja nesto radi sa nizom....
    for (i=0;i<j;i++) printf("%d\t",b[i]);
}

int main(int argc, char *argv[])
{
    int i, a[100];
    // inicijalizujem niz
    for (i =0;i<100;i++) a[i]=i;
    // pozovem f-ju sa argumentima: dimenzija niza i pokazivac na niz
    neka_funkcija(100, a);
    system("PAUSE");    
    return 0;
}

 
Odgovor na temu

MixMaster

Član broj: 10076
Poruke: 323
195.66.174.*



+32 Profil

icon Re: Kako f-iji predati pokazivac na niz cijelih brojeva?09.01.2005. u 23:36 - pre 233 meseci
Zahvaljujem!
Vidi bako, DžEDAJ!
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako f-iji predati pokazivac na niz cijelih brojeva?

[ Pregleda: 5052 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.