Salve,
Sono nuovo nel mondo della programmazione C, ho un problema nell'identificare l'errore di uno dei primi programmi che ho scritto.
Il programma è il seguente e l'errore è di core dump:
#include <stdio.h>
#define N 10
/*PROTOTOPO DELLA FUNZIONE*/
void two_largest(int *a, int n, int *l, int *s);
/*QUI STA IL MAIN*/
int main (void){
int a[N], *p, *largest, *second_largest;
for(p=a; p<a+N; p++){
printf("Scrivi %d numeri da memorizzare nel vettore:\n", N);
scanf("%d", p);
}
(void) two_largest(a, N, largest, second_largest);
printf("I due numeri più grandi sono: %d %d\n", *largest, *second_largest);
return 0;
}
/**************************DEFINIZIONE DELLA FUNZIONE********************************/
void two_largest(int *a, int n, int *largest, int *second_largest){
int stack=0;
for(second_largest = a, largest = a+1; largest < a+n; largest++ && second_largest++){
if(*largest > *second_largest)
NULL;
else if(*largest < *second_largest){
stack = *largest;
*second_largest = stack;
*largest = *second_largest;
}
else if(*largest == *second_largest)
*second_largest=0;
}
}
Potreste indicarmi qual è il problema? Temo che mi sfuggano alcuni alias tra puntatori e vettori perché non ho ancora una grande dimestichezza, se corredate di una brevissima spiegazione ve ne sarò ancora più grato.
A presto! (spero)