Sto lavorando sulle strutture e sui puntatori all'interno di questo codice (vi riporto la parte in cui ho problemi):
- Codice:
#include <stdio.h>
#include <stdlib.h>
struct prova
{
/*variables */
float *p;
} pro;
void inizio (struct prova);
void stampa (struct prova);
int main(){
inizio(pro);
stampa(pro);
return 0;
}
void inizio (struct prova pro){
int t;
pro.p=(float*)malloc(5 * sizeof(float));
t=0;
pro.p[0]=2;
}
void stampa (struct prova pro){
int i,t;
for(i=0; i<5; i++){
pro.p[t+1]=pro.p[t]; // Linea corrispondente all'errore. Prima di utilizzare le strutture, mi restituiva il valore 2.
printf("Stampo: %d -> %f\n", i, pro.p[t+1]);
}
}
Mi dà il seguente exc_bad_access(code=1, address=0xffffffff 5bdd89e0).
Non so se sia corretto procedere nel seguente modo. Considerate che sto familiarizzando soltanto da poco con le strutture e questo codice ne è, per l'appunto, la prova.
Inoltre volevo chiedervi se sia corretto allocare dinamicamente p all'interno della prima funzione (inizio) o se si debba fare nel main e/o nell'altra funzione (stampa).
Ciò che vorrei fare è tenere in memoria i valori e copiarli all'interno di un file di testo.
Spero possiate aiutarmi a capire dove sbaglio.
Vi ringrazio.
Alex