Sto scrivendo un programma in cui fscanizzo un file e scrivo ripetutamente nello stesso indirizzo di memoria. Ho provato il seguente:
FILE *f = fopen(fname, "r");
int* num;
while(fscanf(f, "%d,", num) != EOF)
{
printf("%d\n", *num);
}
che, quando lo eseguo, produce Bus Error 10, il che significa che sto cercando di scrivere su un indirizzo non autorizzato. Tuttavia, funziona come segue:
FILE *f = fopen(fname, "r");
int num;
while(fscanf(f, "%d,", &num) != EOF)
{
printf("%d\n", num);
}
Entrambi compili bene, come mi aspetterei. Quello che non capisco è il motivo per cui posso scrivere direttamente su un indirizzo di memoria ma non su un puntatore a quell'indirizzo. E se non sono uguali, perché lo compila?