PDA

Visualizza la versione completa : [C] creare array di dimensione passata come variabile di una funzione


Le085
28-05-2009, 23:31
Salve
oggi mi sono scontrato con un bel problema che non ho trovato il modo di risolvere

posso riassumerlo così:

ho una funzione f(int kk)

al cui interno vorrei dichiarare un array

dtype data[kk];

so che questo non è possibile perchè il compilatore vuole sapere a priori la dimensione di questo array.
il problema è che questa funzione dovrebbe essere parametrica e questo valore vorrei acquisirlo come parametro del main.
c'è qualche soluzione?
vorrei evitare il #define da cambiare a mano ogni volta...

sono vincolato all'utilizzo dell'array perchè ho una funzione già implementata che mi richiede proprio l'array...

se necessario provo ad essere più esplicito...

ciao e grazie per l'eventuale supprto :)

oregon
28-05-2009, 23:44
Questo e' il caso di utilizzare l'allocazione dinamica del vettore.

Usa un puntatore e la malloc. Non dimenticare la free quando il vettore non serve piu'.

Le085
29-05-2009, 00:30
grazie mille, in effetti penso che sia l'unica strada...

allora io mi creo un buffer di dimensione kk
dtype *buffer;
buffer=malloc( kk*sizeof(dtype)) ;
poi però ho la mia funzione che prende
f2(dtype data[]){}
quindi se chiamo
f2(buffer);
dovrebbe funzionare giusto?

dopo provo :)

Le085
29-05-2009, 01:04
ok compila, grazie mille!

speriamo funzioni pure :D

il debug lo faccio domani, per stasera mi basta per andare a dormire sereno :)

Loading