PDA

View Full Version : [C++] problema puntatori


mistergks
31-03-2011, 16:30
Ho fatto delle prove sul compilatore per imparare i puntatori. Come mai se eseguo questo mi appare una finestra di windows di chiusura forzata? "si è verificato un errore nel programma.exe. L'applicazione verrà chiusa"..
So che l'errore è dato dall'assegnamento p=x; che andrebbe fatto p=&x; ma mi spiegate il motivo? cioè cosa succede all'interno?



#include <iostream>
using namespace std;

int main()
{
int *p;
int x=5;
p=x;
cout<<*(p);


system("PAUSE");
return 0;
}

mistergks
31-03-2011, 16:33
un'altra cosa...
da come ho capito:
i puntatori vanno sempre dereferenziati con * davanti..cioè nelle dichiarazioni, nei costrutti if, for ecc... l'asterisco * non va messo soltanto nelle inizializzazioni... sbaglio?

Freaxxx
31-03-2011, 16:35
io i puntatori li ho fatti in C, del C++ non ricordo molto della sintassi ma credo che la ragione per la quale ti riporta un errore, o meglio si blocca il programma, è quella per cui lui tenta di accedere ad un indirizzo di memoria per il quale non è autorizzato dal kernel/loader.

Azzardando una prima ricostruzione dei fatti, memore di un po' di C++, il tuo puntatore tenta di accedere alla cella di memoria che ha 5 come indirizzo, che probabilmente viene considerata un'area off limits dal sistema operativo per il tuo programma.

goldorak
31-03-2011, 16:43
Beh che il programma crashi e' normale dai al puntatore un valore a caso (in questo caso 5) , magari cambia l'istruzione



p = x in p = &x



:p