|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
[C++] problema puntatori
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? Codice:
#include <iostream>
using namespace std;
int main()
{
int *p;
int x=5;
p=x;
cout<<*(p);
system("PAUSE");
return 0;
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
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? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
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. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2003
Messaggi: 16462
|
Beh che il programma crashi e' normale dai al puntatore un valore a caso (in questo caso 5) , magari cambia l'istruzione
Codice:
p = x in p = &x
__________________
MICROSOFT : Violating your privacy is our priority |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:47.



















