PDA

Visualizza la versione completa : [c] standard c99 vc++ 2008


cles
28-04-2010, 13:56
Ciao a tutti,
stò leggendo un libro di programmazione C dove alla fine di ogni capitolo svolgo alcuni esercizi di programmazione.
In questo momento sono arrivato al capitolo che parla degli ARRAY uni e multidimensionali,la maggior parte degli esercizi è incentrato sui multi ma con vc++ ho molti problemi:

_mi dà errore per esempio se scrivo:
sum += esempio[i] per rimediare ho trovato sul web questa soluzione sum += *esempio[i],ma il libro per il momento non ne parla.

_non riesco ad usare gli array multidimensionali,sempre sul web ho trovato qualcosa che parla del non supporto dello standard c99 da parte di vc++,esiste rimedio per questo?per esempio un esercizio mi dice di disegnare una scacchiera dove far muovere l'alfabeto in orizzontale e in verticale,esempio
abc---
--de--
--gf--
è possibile farlo senza usare gli array multi? :bhò:

grazie.

shodan
28-04-2010, 13:59
Originariamente inviato da cles
sempre sul web ho trovato qualcosa che parla del non supporto dello standard c99 da parte di vc++,esiste rimedio per questo?


No, VC++ non supporta il C99 (e questo è bene IMHO).
Array multidimensionali variabili si possono fare solo con allocazione dinamica.

cles
28-04-2010, 14:08
Originariamente inviato da shodan
No, VC++ non supporta il C99 (e questo è bene IMHO).
Array multidimensionali variabili si possono fare solo con allocazione dinamica.

Scusa,stò iniziando ad imparare ora
mi potresti spiegare cosa vuol dire allocazione dinamica e perchè è un bene che non supporta il C99?

oregon
28-04-2010, 14:13
Originariamente inviato da cles
Scusa,stò iniziando ad imparare ora
mi potresti spiegare cosa vuol dire allocazione dinamica e perchè è un bene che non supporta il C99?

Se stai imparando, ti consiglio un bel libro dove è sicuramente spiegata l'allocazione dinamica, dopo i puntatori e altre nozioni necessarie e propedeutiche.

cles
28-04-2010, 14:16
E' quello che stò facendo :jam:
ma vorrei capire bene prima di passare al prossimo capitolo ,altrimenti faccio troppa confusione.

shodan
28-04-2010, 14:22
L'allocazione dinamica si usa quando c'è la necessita di creare qualcosa a runtime.
Ad esempio stai usando un array troppo piccolo e te ne serve uno più grande. Ne allochi uno, ricopi il vecchio e usi solo quello nuovo. Con l'allocazione fai richiesta al sistema operativo di una zona di memoria, dichiarando che ne sei responsabile. Quando non ti serve più la liberi.

In C si usanomalloc(), realloc() e free() per gestire le allocazioni.
In C++ new e delete.

Per quanto riguarda il C99.
Il C99 è la ratifica ufficiale di una serie di estensioni introdotte da GCC che miravano a svecchiare il C. A parte Gcc non so quanti altri compilatori lo supporti. Introduce i VLA (variable lenght array) che spesso danno più problemi di quanti ne risolvano e soprattutto stravolge le abitudini di molti programmatori C, i quali continuano a usare il buon vecchio C89.

cles
28-04-2010, 14:32
Originariamente inviato da shodan
L'allocazione dinamica si usa quando c'è la necessita di creare qualcosa a runtime.
Ad esempio stai usando un array troppo piccolo e te ne serve uno più grande. Ne allochi uno, ricopi il vecchio e usi solo quello nuovo. Con l'allocazione fai richiesta al sistema operativo di una zona di memoria, dichiarando che ne sei responsabile. Quando non ti serve più la liberi.

In C si usanomalloc(), realloc() e free() per gestire le allocazioni.
In C++ new e delete.

Per quanto riguarda il C99.
Il C99 è la ratifica ufficiale di una serie di estensioni introdotte da GCC che miravano a svecchiare il C. A parte Gcc non so quanti altri compilatori lo supporti. Introduce i VLA (variable lenght array) che spesso danno più problemi di quanti ne risolvano e soprattutto stravolge le abitudini di molti programmatori C, i quali continuano a usare il buon vecchio C89.

Grazie delle risposte,
per quello che riguarda il C99 ho capito,per l'allocazione dinamica aspetterò di arrivarci con il libro per capire bene.
Vorrei però capire come sia possibile svolgere l'esercizio del primo post senza array multi,come si può muoversi in orizzontale e verticale senza questi?

shodan
28-04-2010, 19:18
Ma esattamente che problemi hai con gli array multi (che poi sarebbero matrici)?

oregon
28-04-2010, 19:24
Originariamente inviato da cles
per l'allocazione dinamica aspetterò di arrivarci con il libro per capire bene.

Che era quello che ti avevo detto ...


Vorrei però capire come sia possibile svolgere l'esercizio del primo post senza array multi,come si può muoversi in orizzontale e verticale senza questi?

Il problema non è chiaro ... mostra del codice su cui stai lavorando per capire meglio ...

cles
28-04-2010, 22:58
Scusate,per quello che riguarda gli array multi continuavo a sbagliare io :dhò: e pensavo che non si potessero utilizzare con il C89!!erroraccio,praticamente utilizzavo la stessa variabile nei due cicli for!

Sono appena all'ottavo capitolo ma ho già molta confusione e non tutto mi è chiaro,sarà questo il motivo dell'errore :messner:

Grazie,
...al prossimo errore

Loading