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;
}