È l'istruzione *punt=y che dà problemi?

di il
1 risposte

È l'istruzione *punt=y che dà problemi?

Sto facendo programmi molto facili per prendere confidenza con le liste puntate (se più o meno ho capito come funzionano) . Il programma che seguirà, senza l'istruzione *punt=y gira, ma se ce la metto si blocca dopo due o tre iterazioni con valori dei puntatori strani. Dove sbaglio?

#include<stdio.h>
#include<stdlib.h>

int main()

{
int y, *punt, i;

punt=&y;

for(i=1;i<=12;i++){

printf("\n%p  ",punt);

printf("%d:    ",i);

scanf("%d",&y);

 punt++;

*punt=y;

 }

return 0;
}

1 Risposte

  • Re: È l'istruzione *punt=y che dà problemi?

    Ciao Lelle
    il problema è che sposti 'punt' in zone indefinite, guarda questo esempio:
    
    int y; 
    
    Da qualche parte in memoria viene riservato lo spazio (4 byte) per la variabile y, cosa ci sia prima e dopo questa zona non si sa.
    
    int* punt = &y; 
    
    Al puntatore punt assegni l' indirizzo di y, ovvero punt punta alla zona di memoria dove è contenuta y, se fai *punt = 4; scrivi dentro y e fin qui va tutto bene.
    
    punt++; 
    
    Sposti il puntatore oltre la zona di memoria che contiene y, cosa ci sia in questa zona non si sa, per cui se ci scrivi dentro fai dei disastri.
Devi accedere o registrarti per scrivere nel forum
1 risposte