Programma riguardante le funzioni e puntatori

di il
2 risposte

Programma riguardante le funzioni e puntatori

Sto cercando di fare questo programma con le funzioni e ho questo problema, se metto la parte di codice nel main il programma funziona, se lo metto nella funzione smette di funzionare.
Credo il problema riguardi il come ho usato i return ma non riesco a risolvere.
#include <stdio.h>
#include <stdlib.h>

int swap(int, int);
int main(){
    /**Scrivere una funzione swap(x,y) che scambi il valore delle variabili
    in argomento**/
    int a = 5, b = 10;
    printf("prima:\ta = %3d,  b = %3d\n", a, b);
    swap(a, b);
    printf("dopo:\ta = %3d,  b = %3d\n", a, b);
    return 0;
}
int swap(int a, int b){
    int c = 0;
    int *b_p = &b;
    int *c_p = &c;
    int *a_p = &a;
    c = *a_p;
    a = *b_p;
    return a; 
    b = *c_p;
    return b;
}

2 Risposte

  • Re: Programma riguardante le funzioni e puntatori

    Se metti return la funzione si interrompe e non continua, quindo due return uno dopo l'altro senza condizioni è inutile, e poi se ritorni qualcosa, dovresti assegnarlo a qualche variabile. Non so bene quello che hai fatto nella funzione, ma credo che tu abbia capito male quello che fanno le funzioni
  • Re: Programma riguardante le funzioni e puntatori

    E' sbagliato il prototipo della funzione: per modificare i valori a e b devi passare i puntatori.
    Il valore di ritorno della funzione é int: potresti fargli ritornare fisso 1 oppure ritornare il nuovo a oppure il nuovo b, dipende da quello che pensi possa servire al chiamante.
    Il prototipo corretto é
    int swap(int *a, int *b)
Devi accedere o registrarti per scrivere nel forum
2 risposte