Ho lo snippet di codice seguente per comprendere il funzionamento del puntatore sull'array di caratteri di lunghezza specifica, con il seguente codice di esempio.Come si comporta il puntatore alla matrice di caratteri?
#include <stdio.h>
int main(){
char sports[5][15] = {
"cricket",
"football",
"hockey",
"basketball"
};
char (*sptr)[15] = sports;
if (sptr+1 == sptr[1]){
printf("oh no! what is this");
}
return 0;
}
Come sptr+1
e sptr[1]
possono essere uguali? Come il primo significa incrementare l'indirizzo, che è memorizzato in sptr
per uno e il secondo uno dei mezzi per ottenere il valore all'indirizzo memorizzato in sptr + 1
.
Non riesco a ottenere GCC (né Clang) per non avvisare sulla mancata corrispondenza del tipo (un compilatore conforme a qualsiasi standard C deve avvisare e anche 'gcc -traditional' fa). Quale compilatore hai usato? – mafso
@mafso sto usando i blocchi di codice – YakRangi
Questo è un IDE, non un compilatore. Gcc, Clang, MSVC sono compilatori, per esempio. – mafso