Capisci il concetto di array, vero? Una variabile con più indici?
L'inizializzazione non fa altro che impostare un valore di partenza per tutti gli indici.
Puoi impostare un valore per ogni indice separatamente come negli esempi che hai postato oppure,
se vuoi che il valore iniziale sia lo stesso per tutti gli indici puoi inserire il valore una volta sola come questo,
int myarray[100]={0}; //initializes all 100 indexes to value zero
oppure,
int myarray[100][5]={-1}; //multi dimensions, initializes all 500 indexes to -1.
Tieni anche presente che ci sono alcuni errori nel libro di mql4. Penso che nel secondo esempio quando dice,
"Nella sequenza inizializzata una o più costanti possono essere omesse. In tal caso i corrispondenti elementi dell'array di tipo numerico sono inizializzati da zero, gli elementi degli array di tipo stringa sono inizializzati dal valore stringa "" (virgolette senza spazio), cioè da una riga vuota (non deve essere confusa con uno spazio)."
e poi mostra questo esempio,
string Mas_s[4] = {"a","b", ,"d"}; // String array
probabilmente doveva essere così:
string Mas_s[4] = {"a","b","","d"}; // String arraydice anche da qualche parte nel libro "tutti gli array sono di tipo statico per default" che è anche un errore, sono come le altre variabili, non statiche a meno che non siano definite come statiche, tranne quando sono globali.
Capisci il concetto di array, vero? Una variabile con più indici?
L'inizializzazione non fa altro che impostare un valore di partenza per tutti gli indici.
Se vuoi che il valore di partenza sia lo stesso per tutti gli indici puoi inserire il valore una volta sola come questa
int myarray[100] {0} //inizializza tutti i 100 indici al valore zero.
A destra
Sono ancora un po' confuso.
Quindi se ho un array
Doppio myarray[100]
Ho dichiarato il tipo di array (doppio), il nome dell'array (myarray) e il numero di indici (100).
Il valore dell'array MyArray può essere assegnato usando Double myarray[100] = {1, 2, 3, ....}, in modo che myarray[1]=1 e myarray[2]=2 ect.
Finora ho costruito gli array solo allo scopo di afferrare i valori dai loop e anche allora l'array è stato usato in modo molto lasco.
Grazie, indicando questo errore hai chiarito una piccola domanda che avevo.
Il primo indice dell'array è zero, quindi se fate
double myarray[100] = {1,2,3 .....};
che farà, myarray[0] == 1, myarray[1] ==2 ecc
Ah giusto, ok.
Quindi cosa succede se ho un array multidimensionale
Double Myarray[3][4] = {0.1,0.2,0.3,0.4,0.5} (scusate, ho notato che prima ho usato dei numeri interi)
Come posso chiamare un valore?
lo chiami come myarray[index,index]; o myarray[index][index]; fa la stessa cosa.
val = myarray[2,2]; //ottene il valore dall'indice dell'array 2,2 lo mette in val.
Print(myarray[2,2]); //lo stampa
Alert(myarray[2][2]); //lo avvisa
Quale sarebbe il valore?
Doppio Myarray[3][4] = {0.1,0.2,0.3,0.4,0.5}
Myarray[1][3]=?
hai una matrice 3 x 4
doppio Myarray[3][4] = {0.1,0.2,0.3,0.4,0.5} ;
si riempirebbe in questo modo
Myarray[0,0] = 0,1;
Myarray[0,1] = 0,2;
Myarray[0,2] = 0,3;
Myarray[0,3] = 0,4;
Myarray[1,0] = 0,5;
Myarray[1,1] = 0,0;
Myarray[1,2] = 0,0;
ecc
Sono senza indizi in questo momento...
Myarray[3][4] non è multidimensionale, se è così perché posso chiamare i valori solo cambiando il valore di una delle dimensioni?
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Sto imparando gli array dalla guida di mql4, e mi sono imbattuto in un argomento con cui sto avendo problemi; l'inizializzazione dell'array è leggermente sconcertante, non capisco la seguente affermazione
"
Inizializzazione degli array
Un array può essere inizializzato solo da costanti di tipo corrispondente. Gli array monodimensionali e multidimensionali sono inizializzati da una sequenza unidimensionale di costanti separate da virgole. La sequenza è inclusa tra parentesi graffe:
"
Non sono confuso dal fatto che un array può essere inizializzato solo da costanti di un tipo corrispondente, ma sono confuso dal concetto di inizializzazione dell'array e dal fatto che una sequenza unidimensionale può avviare un array multidimensionale.
Sono confuso da quanto segue.
"
Nella sequenza inizializzata una o più costanti possono essere omesse. In tal caso i corrispondenti elementi di array di tipo numerico sono inizializzati da zero, gli elementi di array di tipo stringa sono inizializzati dal valore stringa "" (virgolette senza spazio), cioè da una riga vuota (non deve essere confuso con uno spazio). Il prossimo programma visualizza i valori degli array, inizializzati da una sequenza con omissione di alcuni valori (script arrayalert.mq4):
"
In definitiva non sto afferrando il concetto di inizializzazione degli array.