Ok sono andato a vedere ciò che mi hai linkato, e mi è stato molto utile per schiarirmi le idee.
Però ho qualche altro dubbio.
Nel tuo testo, a pag 134, scrive, nella prototipazione di funzione "void shuffle(Card *);" e l'asterisco fa pensare che l'argomento debba essere un puntatore, come mai invece poi mette argomento "Deck" che è un semplice array di card? è un errore di battitura?
E poi, scrivendo un codice del genere:
struct testi
{
char *testo0 = "nel mezzo del cammin di nostra vita";
char *testo1 = "mi ritrovai in una selva oscura";
char *testo2 = "che la diritta via era spartita";
}strofa;
void stampa0(testi cstrofa);
void stampa1(testi cstrofa);
int main()
{
stampa0(strofa);
stampa1(strofa);
system("pause");
}
void stampa0(testi cstrofa)
{
printf("%s \n", cstrofa.testo0);
printf("%s \n", cstrofa.testo1);
printf("%s \n", cstrofa.testo2);
cstrofa.testo2 = "che la diritta via era smarrita";
}
void stampa1(testi cstrofa)
{
printf("\n \n%s \n", cstrofa.testo0);
printf("%s \n", cstrofa.testo1);
printf("%s \n", cstrofa.testo2);
}
Perchè la funzione "stampa0" non modifica il valore del testo2 (Quando poi viene eseguita la seconda funzione il testo 2 rimane comunque "Che la diritta via era spartita"? Cosa dovrei scrivere per farle fare ciò?
è perchè se scrivo "char *testo2 = "che la diritta via era spartita";" me lo da corretto e me lo stampa pure, e se invece scrivo "char *testo2[36] = "che la diritta via era spartita";" mi dice che è sbagliato e non me lo fa stampare?
In teoria una stringa dovrebbe essere di tipo array, non un char che invece dovrebbe essere un carattere singolo.
Sono confuso