Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2011, 16:30   #1
mistergks
Senior Member
 
L'Avatar di mistergks
 
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;
}
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2011, 16:33   #2
mistergks
Senior Member
 
L'Avatar di mistergks
 
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?
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2011, 16:35   #3
Freaxxx
Senior Member
 
L'Avatar di Freaxxx
 
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.
Freaxxx è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2011, 16:43   #4
goldorak
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
goldorak è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:42.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v