Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    80

    [C] Problema con printf

    Ciao,
    sto scrivendo un semplice programma in c che dati due interi ne scambia l'indirizzo per mezzo di due puntatori.
    Se il codice è il seguente (p e q sono i puntatori) non ho problemi:

    codice:
    stampa(p,q);
    swap(p,q);
    stampa(p,q);
    infatti inserendo per esempio 3 e 5 ottengo:

    codice:
    p: contenuto: 3 , indirizzo 0xbf907130.
    q: contenuto: 5 , indirizzo 0xbf907134.
    p: contenuto: 5 , indirizzo 0xbf907130.
    q: contenuto: 3 , indirizzo 0xbf907134.
    Se però inserisco delle printf in questo modo:
    codice:
    printf( "Prima dello scambio:\n);
    stampa(p,q);
    swap(p,q);
    printf("Dopo lo scambio:\n");
    stampa(p,q);
    ottengo:
    codice:
    Prima dello scambio:
    p: contenuto: 14617120 , indirizzo 0xbfc988e0.
    q: contenuto: 134514938 , indirizzo 0xbfc988e4.
    Dopo lo scambio:
    p: contenuto: 134514938 , indirizzo 0xbfc988e0.
    q: contenuto: 14617120 , indirizzo 0xbfc988e4.
    non capisco perchè...mi succede lo stesso se utilizzo fprintf..

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mostra tutto il codice delle varie funzioni ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    80
    codice:
    void stampa(int* p, int* q)
    {
    	printf("p: contenuto: %d , indirizzo %p.\n", *p, p);
    	printf("q: contenuto: %d , indirizzo %p.\n", *q, q);
    
    }
    
    
    
    void swap(int *x,int *y)
    {
        int temp;
        temp= *x;
        *x=*y;
        *y=temp;
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    213
    Nelle procedure tu dichiari i parametri come puntatori quindi tu devi passargli il loro indirizzo di memoria.

    codice:
    #include <stdio.h>
    
    void stampa(int* p, int* q)
    {
    	printf("p: contenuto: %d , indirizzo %p.\n", *p, p);
    	printf("q: contenuto: %d , indirizzo %p.\n", *q, q);
    
    }
    
    
    
    void swap(int *x,int *y)
    {
        int temp;
        temp= *x;
        *x=*y;
        *y=temp;
    }
    
    int main()
    {
        int p, q;
        scanf("%d", &p);
        scanf("%d", &q);
        printf( "Prima dello scambio:\n");
        stampa(&p,&q);
        swap(&p,&q);
        printf("Dopo lo scambio:\n");
        stampa(&p,&q);
        return 0;
    }

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.