Allora ho questo programma che al momento della compilazione mi dà questo errore:

saxpy.c: In function `main':
saxpy.c:45: warning: passing arg 5 of `saxpy' from incompatible pointer type (l'ho segnata in blu)
saxpy.c: In function `saxpy':
saxpy.c:63: incompatible types in assignment(l'ho segnata in rosso)


Lo stesso procedimento funziona se al posto degli array ci sono variabili, quindi cosa c'è di diverso quando si hanno array??

codice:
#include <stdio.h>
#include <malloc.h>

/* PROTOTIPO FUNZIONE */
void saxpy(float *X, float *Y, float alfa, int n, float *Z); 

/* PROGRAMMA CHIAMANTE*/
main()
{
	/* DICHIARAZIONE VARIABILI */
	float *X, *Y, *Z, alfa;
	int i, c, j;
	int n;

	/* LETTURA ELEMENTI ARRAY */
	printf("Inserire il numero di elementi n: ");
	scanf("%d",&n);

	/* LETTURA ALFA */
	printf("Inserire il numero alfa: ");
	scanf("%f",&alfa);

	/* ALLOCAZIONE DINAMICA DELLA MEMORIA */
	if(!(X = (float *)malloc(n*sizeof(float))))
	abort();
	if(!(Y = (float *)malloc(n*sizeof(float))))
	abort();
	if(!(Z = (float *)malloc(n*sizeof(float))))
	abort();

	/* LETTURA ELEMENTI ARRAY X */
	printf("\n");
	for (i=0; i<=n-1; i++){
	printf("Inserire il valore dell'elemento X%d: ", c=i+1);
	scanf("%f", &X[i]);
	}

        /* LETTURA ELEMENTI ARRAY Y */
	printf("\n");
	for (i=0; i<=n-1; i++){
	printf("Inserire il valore dell'elemento Y%d: ", c=i+1);
	scanf("%f", &Y[i]);
	}

        saxpy(X, Y, alfa, n, &Z);
	for (i=0; i<=n-1; i++){
	printf("%f\n", Z[i]);}
	}

/****************** SPECIFICHE FUNZIONE *************************/
void saxpy(float *X, float *Y, float alfa, int n, float *Z)
{
int i;

	for (i=0; i<=n-1; i++)
	 {
		X[i] = X[i] + alfa * Y[i];
    }
  *Z = X;
}