Allora vediamo di spiegare chiaramente:Originariamente inviato da stefanoB
No, ho ben chiaro la differenza tra costante char e stringa, quindi apici e virgolette (vedere mio 1° post) e questo benedetto vElenco[i].campo1[x]='a'; è venuto da un precedente suggerimento mentre i membri sono delle costanti e quindi è ok che il warning è avvento con vElenco[i].campo1[x]='ab' (credo di aver riportato male durante le prove) ...
'a', 'b', 'x', '#', '(', '%' e quant'altro sono costanti char. Il valore che portano non è altro che un solo byte, indicante il singolo codice ascii che rappresenta il carattere tra gli apici. Visto che 'a' in ascii è 97 (non ricordo se maiuscolo o minuscolo ma è sempre una a) potresti per esempio scrivere anche 97 al posto di 'a'. I char sono caratteri singoli, non possono rappresentare stringhe da soli.
"stringa1", "mia stringa", "altra stringa", "c" sono tutte stringhe, cioè array di char. Per le prime tre è più evidente perchè si indicano una serie di caratteri, ma anche l'ultima lo è. "c" non può essere assegnata ad un singolo char perchè in quanto stringa, è rappresentata da un array, e "c" non è altro che un puntatore al primo elemento dell'array.
"c" è un char*
'c' è un char
Pertanto nel momento in cui tu scrivi "c" al posto di 'c' nel caso volessi assegnare un valore ad una variabile char commetteresti un errore di tipo.
Se comunque non ti rimane chiaro ti consiglio di andare leggerti qualche documentazione del C.
Il punto è che se definisci i membri come "const char" che io sappia non puoi assegnarci niente visto che sono costanti. Togli il const e potrai assegnarci valori normalmente come hai indicato. Spero di aver risposto alla tua domanda visto che non mi è molto chiara.Originariamente inviato da stefanoB
comunque quello che non mi è chiaro e che ancora non mi avete spiegato è che avendo dei membri costant char definiti in campo1, campo2 ... un assegnazione (precedentemente suggerita) in un for del tipo
for (int x=0; x<2; x++) { //se vuoi scrivere dal primo elemento devi partire da 0
vElenco[i].campo1[x]='a';
}
come fa ad assegnare valori ai vari membri se è indicato ... campo1[x]
e quindi nuovamente rispondo che non è possibile valorizzare i membri se non indicandone singolarmente ed espressamente il loro nome!

Rispondi quotando