[C]Passaggio array a funzione.[RISOLTO]

di Anonimizzato16022 il
3 risposte
In questo semplice programma (l'ho scritto solo per fare un esempio e capire l'errore) passo alla funzione un array che viene riempito e poi stampato dalla funzione, quando lo stesso array però viene stampato dal main i valori sono sballati come se avesse "perso la traccia" di dove si trova l'array.
Sto sbagliando qualcosa nel passaggio quello lo so, come posso risolvere? (vorrei passare l'array senza return ma direttamente per indirizzo).

#include <stdio.h>
#define MAX 5
void riempi_array(int *array);
int main(int argc, char * argv[]){
	int arr[MAX], i;
	riempi_array(&arr[MAX]);
	for(i=0; i<MAX; i++)
		printf("%d ", arr[i]);
	return 0;
}
void riempi_array(int *array){
	int i;
	for(i=0; i<MAX; i++)
		array[i]=i;
	for(i=0; i<MAX; i++)
		printf("%d ", array[i]);
}
Grazie in anticipo

3 Risposte

  • L'errore sta in

    riempi_array(&arr[MAX]);

    che dovrebbe essere

    riempi_array(arr);
  • oregon ha scritto:


    L'errore sta in

    riempi_array(&arr[MAX]);

    che dovrebbe essere

    riempi_array(arr);
    Che errore stupido , ho perso 2 ore dietro un esercizio da 100 righe di codice per questa cavolata .
    Grazie mille per la rapidità.
  • Perchè tu gli passi l'indirizzo di memoria di un elemento dell'array che manco dovrebbe esistere e quindi ti mette numeri a caso (gli passi l'indirizzo dell'elemento con indice 5 dell'array).

    Ad una funzione generica il vettore si passa per indirizzo.
    Per definizione &vettore[0] e vettore sono la stessa cosa. Dare l'indirizzo del primo elemento del vettore o nome del vettore indica l'indirizzo del vettore.
    Quindi per semplicità basta il nome del vettore.
Devi accedere o registrarti per scrivere nel forum
3 risposte