Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308

    [C/C++] Modificare valori di una struct tramite funzione

    Ciao a tutti,
    premetto che sono nuovo del linguaggio C, devo realizzare una funzione che mi modifichi dei valori di una struct. La seguente è una porzione del mio attuale codice:


    Codice PHP:
    typedef struct{
    s32 xy;
    s32 vy;
    s32 speed;
    Personaggio;

    Personaggio ryu;

    void MovePlayer(Personaggio sprite);

    int main(int argcchar** argv){
    while(
    1){
    MovePlayer(ryu);
    }
    return 
    0;
    }

    void MovePlayer(Personaggio sprite){
     
    sprite.x+=((Pad.Held.Right Pad.Held.Left)*sprite.speed)<<8;

    Pad.Held.Right e Pad.Held.Left sono delle funzionalità legate alla libreria che sto utilizzando, e non sono quello il problema. Il problema è che OVVIAMENTE il valore x di ryu non viene modificato dalla funzione, il motivo so che c'entra con i puntatori ma non capisco come applicarli correttamente a questo codice.

    Qualche aiuto?
    Grazie

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

    Re: [C/C++] Modificare valori di una struct tramite funzione

    Qualcosa del genere

    codice:
     
    
    MovePlayer(&ryu);
    
    void MovePlayer(Personaggio *sprite){
     sprite->x+=((Pad.Held.Right - Pad.Held.Left)*sprite->speed)<<8;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Basta passare la struttura tramite puntatore.
    codice:
    void MovePlayer(Personaggio * sprite){
    sprite->x+=((Pad.Held.Right - Pad.Held.Left)*sprite->speed)<<8;
    }
    codice:
    MovePlayer(&ryu);
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Grazie a entrambi,
    ha funzionato perfettamente!
    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.