|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
[c++] Definizioni "variabili"
Ciao, sto lavorando su un sw, in c++
sin ora ho lacoratu su un vettore da 50 elementi quindi avevo: Codice:
#define X 50 int Vect[X]; |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Come linkato da GByTe87 il modo migliore per creare array la cui dimensione sia nota solo a tempo di esecuzione è allocarli dinamicamente sullo heap.
__________________
Concluso con:... |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
Grazie mille, domani provo e ti faccio sapere
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
Il fatto è questo, se sotto gli include tolgo la definizione dei vettori, tutte le funzioni che richiamano quei dati non restituiscono errore ed ovviamente non parte nada. mi aiutate con un esempio. diciamo per esempio io ora abbia Codice:
#include ...
...
#define x 5
#define y 6
#define z x*y
unsigned short vett1[x];
unsigned short vett2[z];
unsigned short vett3[z*3];
...
void prova (void)
{
for (i=0;i<z*3;i++)
{vett3[i]=i;}
}
ovviamente il tutto deve continuare ad essere globale perchè mi servono anche in altre finzioni... grazie |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Nov 2008
Messaggi: 17
|
Potresti optare per il passaggio dei parametri attraverso le funzioni, cosi eviti di usare le definizioni globali =).
Indi o opti per una cosa simile: Codice:
....
int main(void)
{
int dim_array[3];
(Qui chiedi di inserire i sati e li inserisci in dim_array[0] , dim_array[1] e dim_array[2])
.......
.......
funzione_uno( parm , dim_array )
funzione_due( parm , dim_array )
.......
.......
return 0;
}
__________________
._. |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
in questo momento dovrei variare troppe cose per passare i parametri da funzione...
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Nov 2008
Messaggi: 17
|
Rimane comunque la soluzione piu' elegante secondo me... e poi hai la possibilita' di modificare i parametri in un tempo successivo
__________________
._. |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Ripremesso che, parlando di C++, la soluzione migliore è usare std::vector, binaramente compatibile con gli array. Nel tuo caso devi dichiarare le tue variabili come puntatori a short e poi usare new per allocare la dimensione che più ti aggrada. |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
Alla fine ho risolto con le malloc...
Codice:
#include ...
....
unsigned short *vett1;
int x;
int y;
...
int main(void)
{
...
x=20;
vett1 = (unsigned short *) malloc(x*sizeof(unsigned short));
...
}
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Questa è la soluzione ideale; rimane quanto detto dagli altri sulle variabili globali.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
grazie mille
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Dimenticavo; in C++ sarebbe meglio usare new e delete invece di malloc e free. Soprattutto se la usi per istanziare classi (invece di tipi primitivi).
E concordo quanto detto sui std::vector, se puoi usali.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 228
|
ok grazie, per ora vorrei solo funzionasse il tutto, poi mi occupo delle migliorie quindi sempre buono a sapersi...
solo che le new le devo studiare... |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Quote:
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Al di là della battuta, in un ambiente lavorativo come lo fai la prima volta e come te lo terrai tutta la vita. Nessuno ti pagherà mai per ottimizzare un programma, a nessuno gliene frega niente dell'ottimizzazione, basta che funzioni. Più facile che ti chiedano altre funzionalità, se non proprio altri software...
Mai trovato un committente a cui gliene possa fregare qualcosa se il software è composto da un main di 10000 righe oppure strutturato a pattern. Io al contrario sono un committente a cui interessa particolarmente |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:35.




















