Stavo facendo alcuni esercizi con puntatori e matrici in C e ho notato che tutti i miei quattro metodi restituivano la stessa risposta. La mia domanda è che ci sono degli svantaggi nell'utilizzare uno dei miei metodi qui sotto? Sono sbalordito da come tutti questi quattro mi danno lo stesso risultato. Ho appena notato che puoi usare un puntatore come se fosse un array e puoi anche usare un array come se fosse un puntatore?Puntatori e matrici in C, Necessità di ulteriori informazioni
char *name = "Madonah";
int i= 0;
for (i=0;i<7; i++){
printf("%c", *(name+i));
}
char name1 [7] = "Madonah";
printf("\n");
int j= 0;
for (j=0;j<7; j++){
printf("%c", name1[j]);
}
char *name2 = "Madonah";
printf("\n");
int k= 0;
for (k=0;k<7; k++){
printf("%c", name2[k]);
}
char name3 [7] = "Madonah";
printf("\n");
int m= 0;
for (m=0;m<7; m++){
printf("%c", *(name+m));
}
Risultati:
Madonah
Madonah
Madonah
Madonah
utilizzare 'char * nome = malloc (sizeof (char) * 8); strcpy (name, "Madonah"); 'così puoi liberare lo spazio in seguito facilmente. – LittleByBlue
Ricordarsi di allocare memoria per ''\ 0''. I valori letterali stringa in C vengono automaticamente aggiunti con ''\ 0'' –
Nota: il primo e l'ultimo sono identici, tranne il nome della variabile indice (' i' vs. 'm'); 'name3' non è usato in questo codice. – WhozCraig