Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - struct problema
Forum - C/C++ - struct problema - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 8:43
Giovedì, 16/04/2009
Testo quotato

Postato originariamente da Lawliet:

Ah forse ci siamo spiegati male entrambi alla fine



No ... lui si e' spiegato bene ... il problema non dipende da come lo prendi ...

La dichiarazione degli array in C funziona in un solo modo e il ciclo per riempirli non c'entra ...

Se dichiari

int x[20];

gli elementi sono 20, sempre e comunque da 0 a 19.

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 12:08
Giovedì, 16/04/2009
mmm.. ma sinceramente questa cosa non mi ero mai posto il problema o.O' Da ora in poi farò come dite voi ^^ E poi facendo anche come dico io... funziona lo stesso :) Forse un altro utente che ha un codice sorgente mio tramite i commenti miei.. capisce come l'ho impostato :)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 12:13
Giovedì, 16/04/2009
Testo quotato

Postato originariamente da Lawliet:
E poi facendo anche come dico io... funziona lo stesso :)



Facendo come? Con quale codice?

E comunque, il fatto che funzioni non vuol dire che e' corretto perche' se usi spazio in piu' e non lo utilizzi, il programma funziona correttamente. Se ne utilizzi di meno, potresti scrivere in altre aree di memoria magari senza accorgerti di averlo fatto.

Testo quotato

Forse un altro utente che ha un codice sorgente mio tramite i commenti miei.. capisce come l'ho impostato :)



Che vuol dire? Mostra il tuo codice e lo capiamo tutti come e' impostato ...

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 4:10
Venerdì, 17/04/2009
scusami sono stato fuori e non ho potuto rispondere. Comunque ho riflettuto un pò e non me ne ero accorto che facevo addiritura in entrambi modi!! sia come io e tu.

un esempio veloce:
stampa vettore eta interi, e mettiamo come dimensione del vettore a 10.

come dite voi: (e qui la maggior parte delle volte lo faccio anche io)
int n=10;
int vettore[n];

for(i=0; i<n; i++)
printf("%d", vettore);

mentre a volte faccio:
int n=9;
int vettore[n];

for(i=0; i<=n; i++) //incluso anche il 10 elemento che sarebbe 9 di indice!
printf("%d", vettore);

alla fine è uguale no!?!? Altrimenti mi sfugge qualcosa sulla tua frase che io potrei occupare altra memoria o rendere spazio inutilizzato.
Sinceramente non mi ero accorto di questo dubbio che mi è sorto adesso e non ci avevo mai fatto caso, visto mi ha sempre funzionato in qualsiasi occasione :|

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:01
Venerdì, 17/04/2009
Testo quotato

Postato originariamente da Lawliet:
mentre a volte faccio:
int n=9;
int vettore[n];

for(i=0; i<=n; i++) //incluso anche il 10 elemento che sarebbe 9 di indice!
printf("%d", vettore);

alla fine è uguale no!?!?



No ... in questo modo e' sbagliato e la tua applicazione potrebbe corrompere lo stack quando scrive nel vettore.

Se dichiari il vettore con

int vettore[9];

allora hai 9 elementi disponibili e non 10, e sono compresi tra indice 0 e 8

Se nella for includi anche il 9, allora vai oltre lo spazio assegnato e rovini lo stack.

Quello che forse vuoi dire e' che, dando per scontato che dichiari 10 elementi con

int vettore[10];

allora puoi scrivere

for(i=0; i<10; i++)

oppure

for(i=0; i<=9; i++)

In questo caso, ovviamente, e' equivalente.

Ultima modifica effettuata da theprogrammer il 17/04/2009 alle 11:03
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 20:14
Venerdì, 17/04/2009
mmm... questa cosa dello stack che potevo corromperlo non la sapevo. Non me ne ero proprio accorto che facevo in entrambi modi, usando anche il metodo sbagliato. Comunque vi ringrazio a te e luke che mi avete corretto questo problema che lo sottovalutavo. Grazie :)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:39
Venerdì, 17/04/2009
Testo quotato

Postato originariamente da Lawliet:
vi ringrazio a te



Di nulla ...

Testo quotato

e luke



Ma luke non ha risposto in questo thread ... :-?

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 22:02
Venerdì, 17/04/2009
:om: non ci crederai davvero, ma avevo il nome tuo e luke per quello che era successo nell'altro topic
scusate ancora :d
Volevo ringraziare andrea non luke

Ultima modifica effettuata da Lawliet il 17/04/2009 alle 22:03
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo