PDA

View Full Version : [C++] Array di puntatori a record


Marasoft
11-03-2005, 07:32
Salve a tutti, vorrei porvi una domanda, forse stupida per molti ma sono agli inizi, sugli array di puntatori.

Dunque

in un progetto multifile

dopo aver dichiarato nel main un array di punatori a record:
int N = 4;
struct record {
-------
}
record *pr[N];

come si fa a passare come parametro di ingresso ad una funzione tale array *pr[N]....?

Ho provato con void push(rec *pr, const int N)... ma non va.. qualcuno sa aiutarmi?

grazie

:cry:

palu15
11-03-2005, 07:56
Originariamente inviato da Marasoft
Salve a tutti, vorrei porvi una domanda, forse stupida per molti ma sono agli inizi, sugli array di puntatori.

Dunque

in un progetto multifile

dopo aver dichiarato nel main un array di punatori a record:
int N = 4;
struct record {
-------
}
record *pr[N];

come si fa a passare come parametro di ingresso ad una funzione tale array *pr[N]....?

Ho provato con void push(rec *pr, const int N)... ma non va.. qualcuno sa aiutarmi?

grazie

:cry:


Non so se ho capito il problema, ma se hai dichiarato una struct record devi usarla come tale cioe' void push(record *pr, const int N) non void push(rec *pr, const int N).
Se posso permettermi: record non e' un gran nome x una struct... magari se riesci usane uno + significativo (in altri linguaggi potrebbe anche essere un tipo riservato).

tglman
11-03-2005, 09:05
i metodi per passare un vettore di puntatori sono questi:
Dichiarazioni:
int fun (int **vet);
o
int fun (int *vet[]);
o
int fun (int *vet[N]);//DOVE N e DEFINITO COME #define N 4

Ciao....

Marasoft
11-03-2005, 18:49
Grazie delle risp. ma non sono ancora riuscito a risolvere il prob.

x palu 15 : 1) nella prototipo della funzione avevo scritto rec per errore in realtà volevo scrivere record, lo so che non è molto appropriato come nome ma era un esempio.....

x tglman: io devo passare alla funzione un vettore di puntatori a record... non un vettore di puntatori ad intero.....

vi prego aiutatemi...

tglman
11-03-2005, 19:09
Basta cambiare int in record (il mio era solo un esempio)

void push(record **pr);
o
void push(record *pr[]);
o
void push(record *pr[N]);//dove n e definito #define N 4

Forse però non ho capito bene tu voi un vettore di puntatori a record, analizziamo un attimo, un qualcosa del tipo
rec *pr[]={p1,p2,p3};
si dorebbe funzionare con questi prototipi, ricordati di usare il vettore cosi:
pr[n]->campo;

Marasoft
12-03-2005, 06:27
Grazie tglman per il tuo aiuto....

Hai perfettamente capito cosa intendevo... però la cosa misteriosa è che anche io sapevo che il passaggio si faceva nei modi che tu hai elencato... ma la cosa strana è che il sorgente non compila mi dice:

"record" was not declared in this scope
"pr" was not declared in this scope


Sto impazzendo è la prima volta che studio qualcosa all'università e non riesco a metterla in pratica .....

cionci
12-03-2005, 16:03
Secondo me ti sei perso un punto e virgola da qualche parte...

tglman
13-03-2005, 18:39
Scusa perchè non ci posti il codice, e poi che compilatore stai utilizzando..

Ciao

Marasoft
13-03-2005, 19:15
Sto utilizzando il dev 4.9 col compilatore integrato mi pare sia il mingc.... :confused:

il progetto è multifile come faccio a postare tutto?

VegetaSSJ5
14-03-2005, 09:21
prendi tutti i file, li zippi e lo alleghi ad un post. se lo zip è + grande di 25000 bytes allora fai 2 files zip.