Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    [C] domandina facile facilòe sui puntatori

    Ciao, il programmino è questo:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        
        int y = 5;     // Dichiara la variabile y
        int *yPtr;    // Dichaiara un puntatore ad una variabile di tipo intero
        
        yPtr = &y;   // Mette l'indirizzo della var y nella var puntatore yPtr
        
        printf("Il valore di y e': %d\n", y);
        printf("La locazione di memoria di y (yPtr) e': %p\n", yPtr);
        printf("Il valore di &*yPtr e': %p\n", &*yPtr);
        printf("Il valore di *&yPtr e': %p\n", *&yPtr);
        
        system("PAUSE");
        return 0;
    }
    Mi potete spiegare perchè &*yPter corrisponde a *&yPtr? (a parolee)

    non mi riesce ad entrare...è grave?

  2. #2

    Re: [C] domandina facile facilòe sui puntatori

    Originariamente inviato da D4rkAng3l
    Ciao, il programmino è questo:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        
        int y = 5;     // Dichiara la variabile y
        int *yPtr;    // Dichaiara un puntatore ad una variabile di tipo intero
        
        yPtr = &y;   // Mette l'indirizzo della var y nella var puntatore yPtr
        
        printf("Il valore di y e': %d\n", y);
        printf("La locazione di memoria di y (yPtr) e': %p\n", yPtr);
        printf("Il valore di &*yPtr e': %p\n", &*yPtr);
        printf("Il valore di *&yPtr e': %p\n", *&yPtr);
        
        system("PAUSE");
        return 0;
    }
    Mi potete spiegare perchè &*yPter corrisponde a *&yPtr? (a parolee)

    non mi riesce ad entrare...è grave?
    E' molto semplice, gli operatori vengono valutati da destra verso sinistra quindi *&yPtr equivale a *(&yPtr) e &*yPter equivale a &(*yPter). Nel primo caso si prende l'indirizzo della variabile yPtr (che è già un puntatore ma non ti interessa,per te contiene un numero,anche se effettivamnete esso è un indirizzo per te ha poca importanza) e poi si controlla il valore contenuto nella cella puntata da quell'indirizzo, quindi si torna al valore di yPtr senza nulla. Nel secondo caso si prende prima il valore puntato da yPtr (cioè il valore di y) e poi si estrae il suo indirizzo, cioè si torna nuovamnete al valore di yPtr.Ecco perchè sono uguali!! * e & sono operatori inversi quindi applicandoli in cascata si annullano.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.