|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
[C++] errore eccezione di 2 puntatori?
ho questa struttura:
struct concorso { int serie; char organizzatore; int partecipanti; }; ...... e credo che nel codice si sovrapponga qualcosa e crascha il prg. da int main richiamo questa routine sotto: void PuntatoriStrutture(){ system("cls"); //classe Cpuntatori cout << endl; //cout << "Numero di byte occupati\n"; cout << "Puntatori a strutture"<< endl; cout << "-------------------------"<< endl; /////////////////////////// //struttura struct concorso c[2], *cPtr=NULL; c[0].serie = 2; c[0].organizzatore = 'F'; c[0].partecipanti = 482; c[1].serie = 0; c[1].organizzatore = 'G'; c[1].partecipanti = 33; c[2].serie = 3; c[2].organizzatore = 'E'; c[2].partecipanti = 107; for(cPtr = c; cPtr < c+3; ++cPtr) printf("%d %c %d\n", cPtr->serie, cPtr->organizzatore, cPtr->partecipanti); getch(); ////////////////////////////// //int *n;//=num; int num[] = {15,14,18,20,30}, *n=NULL; //int *n=num; cout << "int num[] = {15,14,18,20,30}; int *n;" << endl; // cout << "I numeri sono:\n"; for (int i = 0; i < 5; i++){ n=&num[i]; // *n=-10; cout << '\t' << i << ". [" << num[i] << "] [stampa contenuto] *n " << *n << " [stampa locazione] n " << n<< endl; //*n stampa contenuto } cout << endl; cout << "-------------------------"<< endl; cout << "premi una tasto" << endl; gotoxy(16, 19); getch(); DisplayMenu(); } .................................. se tolgo questo pezzo di codice: /////////////////////////// //struttura struct concorso c[2], *cPtr=NULL; c[0].serie = 2; c[0].organizzatore = 'F'; c[0].partecipanti = 482; c[1].serie = 0; c[1].organizzatore = 'G'; c[1].partecipanti = 33; c[2].serie = 3; c[2].organizzatore = 'E'; c[2].partecipanti = 107; for(cPtr = c; cPtr < c+3; ++cPtr) printf("%d %c %d\n", cPtr->serie, cPtr->organizzatore, cPtr->partecipanti); getch(); ////////////////////////////// .....tutto funziona ....ma qual'è il problema forse si sovrappongono zone di memoria di *n e *cPtr ??????????? se invece metto int num[] = {15,14,18,20,30}, *n=NULL; all'inizio della routine, i primi 2 numeri che stampa sono rispettivamente: 69 e 107 invce di 15 e 14........ e gurda caso 107 è il numero della struttura concorso........... come mai?????? e funziona. |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Dichiari c come array di due elementi ma cerchi di usarne tre (c[2] va a scegliere il terzo elemento !)
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:02.