Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144

    [C] Puntatore dentro struttura globale

    Ciao! non capisco la sintassi per modificare un valore puntato dentro una struttura che è puntata a sua volta:

    codice:
    struct esempio{ int *vita; };
    struct *esempio link;
    
    funz1(){
      int vita = 1;
    
      link->vita = &vita;
    }
    
    funz2(){
      link->vita--;
    }
    Sicuramente sbaglio sia ad inserire il valore che poi a modificarlo. Qualcuno mi puo aiutare? Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Intanto deve essere

    struct esempio *link;

    e non come hai scritto.

    Poi, bisogna allocare una struttura con una malloc per usare link ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Chiedo scusa per l'imprecisione del codice riportato. In realtà il codice nel programma è giusto, infatti gli altri campi (che per semplificazione non ho riportato) li leggo tranquillamente all'interno della funz2:

    codice:
    struct esempio{ int *vita; };
    struct esempio *link;
    
    funz1(){
      struct esempio *link;
      int vita = 1;
    
      link = (struct esempio*)malloc(sizeof(struct esempio));
    
      link->vita = &vita;
    }
    
    funz2(){
      link->vita--;
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perché hai un link globale e uno locale?

    E poi, non è corretto assegnare l'indirizzo di una variabile locale (int vita) perché all'uscita dalla funzione non sarà più valida.

    Infine, se vuoi diminuire il valore del valore puntato devi scrivere

    (*link->vita)--;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    144
    Ho risolto grazie alla sintassi che mi hai scritto nell'ultimo messaggio. Grazie mille!

    Ogni funzione viene eseguita da un thread quindi l'unico modo di comunicare che avevo senza usare variabili globali era di inserire un puntatore all'interno della struttura che già veniva inviata per altri motivi

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prego ... ma occhio all'indirizzo della variabile locale perché avrai problemi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.