Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] Puntatore ad intero...

    Ho il seguente programma che utilizza questa struttura... come mai chiamando rcvbuf.pid io vado ad inserire il numero del puntatore e non il valore...? Come faccio a dirgli che voglio il valore contenuto in pid???
    Qualcuno mi sa aiutare?

    codice:
    main()
    {
    	int i,n,w;
    	int t = 1;
    	int msgid;
    	int pidRececed;
    	struct msgbuf1 {
    	               long mtype;
    	               char mtext[100];
    		       int pid;
    	} *sndbuf, rcvbuf;
    */
    	BUFFER *sndbuf, rcvbuf;
    
    //
    ... programma
    //
    
    pidReceved = rcvbuf.pid;
    
    //continua
    }
    ---smile is your life---:-)---

  2. #2
    Cioè quell che veglio dire è che se tento di dirgli che deve prenderne il valore usando *

    e quindi...

    pidReceved = (int *)rcvbuf.pid;

    in pidReceved continua a esserci l'indirizzo di memoria di rcvbuf.pid...

    ...non so se ho reso l'idea...
    ---smile is your life---:-)---

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da mr.smile

    ...non so se ho reso l'idea...
    NO


    Se vuoi il valore del campo pid devi scrivere

    rcvbuf.pid;


    se vuoi il puntatore al campo pid devi srivere

    &(rcvbuf.pid);

  4. #4
    Ma il problema è proprio questo,
    ricbuf.pid lui mi restuisce il puntatore (cosa che non dovrebbe fare)

    è per quello che pensavo si dovesse usare *... ma nemmeno...
    proprio non capisco :-(
    ---smile is your life---:-)---

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da mr.smile
    Ma il problema è proprio questo,
    ricbuf.pid lui mi restuisce il puntatore (cosa che non dovrebbe fare)

    è per quello che pensavo si dovesse usare *... ma nemmeno...
    proprio non capisco :-(
    In che senso ti restituisce il puntatore? Come fai a spaere che e il puntatore, se scrivi

    ricbuf.pid

    stai sicuro che ti restituisce il valore del campo pid della struttura, cosa contenga poi questo campo pid non so, ma non ti restituisce il puntatore al campo.

  6. #6

    Re: [C] Puntatore ad intero...

    Originariamente inviato da mr.smile
    Ho il seguente programma che utilizza questa struttura... come mai chiamando rcvbuf.pid io vado ad inserire il numero del puntatore e non il valore...? Come faccio a dirgli che voglio il valore contenuto in pid???
    Qualcuno mi sa aiutare?

    codice:
    main()
    {
    	int i,n,w;
    	int t = 1;
    	int msgid;
    	int pidRececed;
    	struct msgbuf1 {
    	               long mtype;
    	               char mtext[100];
    		       int pid;
    	} *sndbuf, rcvbuf;
    */
    	BUFFER *sndbuf, rcvbuf;
    
    //
    ... programma
    //
    
    pidReceved = rcvbuf.pid;
    
    //continua
    }
    Penso il tuo problema sia nella sintassi.

    codice:
    pidReceved = rcvbuf -> pid;
    oppure se ti vuoi complicare la vita:

    codice:
    pidReceved = (*rcvbuf).(*pid);
    Dipende ovviamente da come hai organizzato il codice, perchè magari mi sbaglio.

    michele

  7. #7
    memcpy(pidReceved, rcvbuf.pid, sizeof(int));

    Forse intendi questo

  8. #8
    in rcvbuf.pid cè un intero e questa variabile è un puntatore,ho cpaito bene?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    63
    forse sbaglio ma..

    codice:
    struct msgbuf1 {
    	               long mtype;
    	               char mtext[100];
    		       int pid;
    	} *sndbuf, rcvbuf;
    uno dei 2 è puntatore, l'altro no...

    con le strutture non va usato il dereference se non è allocata in heap, quindi l'uso da fare sarebbe corretto

    rcvbuf.pid;

    a meno che la struttura non sia allocata con qualcosa del genere

    rcvbuf* pippo = (rcvbuf*) malloc(sizeof(rcvbuf));

    che non mi pare il caso.


    prova a fare cosi'

    codice:
    struct msgbuf1 {
    	               long mtype;
    	               char mtext[100];
    		       int pid;
    	};
    
    //main
    msgbuf a;
    a.pid= 3;
    
    printf ("%d",a.pid);

    e vedi cosa ti viene fuori

    spero di non aver detto boiate
    Il sesso sicuro è importante, non fate mai l'amore su un'impalcatura.
    Against TCPA: Against Palladium

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.