Ho una funzione, l'idea di base della funzione è quella di cambiare a a
punti. La prima versione funziona comunque la seconda versione no.anomalia puntatore C, si prega di spiegare
Qualcuno potrebbe aiutarmi a capire cosa sta succedendo qui?
// this works
void swap(int **a) {
int *temp = malloc(sizeof(int) * 3);
temp[0] = 0;
temp[1] = 1;
temp[2] = 2;
*a = temp;
}
// this does not
void swap(int **a) {
*a = malloc(sizeof(int) * 3);
*a[0] = 0;
*a[1] = 1; // seg fault occurs on this line
*a[2] = 2;
}
sto chiamando la funzione in questo modo
int main() {
int b[] = {0,1};
int *a = b;
swap(&a);
return 0;
}
Inoltre, entrambe le funzioni non appartengono allo stesso file nello stesso momento.
Si sta facendo qualcosa di molto sbagliato nella seconda funzione. – wRAR
Perché nominare una nuova variabile con lo stesso nome del parametro? –
re dichiarare che l'array int nella seconda funzione di scambio era una svista quando si postava qui. L'ho rimosso dalla domanda. – robbmj