Sto proseguendo il mio percorso di studio del C da autodidatta e mi sto cimentando sul binomio array-funzioni,
Ho voluto scrivere un programmino idiota che prendesse un vettore di numeri interi di lunghezza n scelta da imput e poi aumentasse i valori dei vari elementi di uno.
Es: 3 4 5 --> 4 5 6.
Purtoppo ogni volta che uso array e funzioni insieme mi da sempre lo stesso errore, in questo caso:
Warning: passing argument 1 of "incrementa_vet" makes pointer from integer without a cast.
Ora io so proprio poco di C ma mi sembra di aver capito che c'è un problema di puntatori (di cui so ancora molto poco) e di casting (anche se non capisco il perchè visto che rimango sempre in ambito dei numeri interi int)
Vi posto il codice intanto:
#include <stdio.h>
#define MAX 10
void incrementa_vett( int v[], int lunghezza); // prototipo funzione
int main (int argc, const char * argv[]) {
int v[MAX];
int i, n;
do {
printf("Quanti numeri saranno inseriti? ") ;
scanf("%d",&n) ;
/* LA DIMENSIONE MASSIMA DEL VETTORE E’ COMPRESA TRA 1 E MAXN */
if ( n > MAX || n <=0 )
printf("Errore: il numero deve essere compreso tra %d e 0\n", MAX) ;
}
while ( n > MAX || n <=0 ) ;
for(i=0; i<n; i++){
printf("Inserisci il numero %d ", i+1);
scanf("%d", &v[i]);
}
incrementa_vett(v[n], n); // QUI MI DA WARNING
printf("Elementi vettore aumentati:\n");
for (i=0; i<n; i++){
printf("%d\n", v[i]);
}
return 0;
}
void incrementa_vett(int v[], int lunghezza){
int i;
for (i=0; i<lunghezza; i++){
v[i]++;
}
}
Ora a me interessa molto venirne a capo sopratutto perchè mi sa che sto sbagliando qualcosa di basico e concettuale alla base, e lo sbaglio ogni volta che provo a operare con delle funzioni sugli array. Qualcuno può darmi una mano o almeno indirizzzarmi su qualche strada?