Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    32

    [C] esempio semplice scambio valore a e b

    So che è un esempio banalissimo ma qualcuno potrebbe illuminarmi sul perché non va? Grazie
    codice:
    #include<stdio.h>
    
    int cambia(int *a, int *b){
    a = 1; 
    b = 2;
    return (a,b);
    
    }
    
    int main(){
    int a = 5, b = 77; 
    
    cambia( a, b); 
    
    printf(" a :%d", a);
    printf(" b :%d" , b);
    
    return 0;
    }

  2. #2
    Ti ho riscritto il codice:
    codice:
    #include<stdio.h>
    
    void cambia(int *a, int *b){
    *a = 1; 
    *b = 2;
    
    
    }
    
    int main(){
    int a = 5, b = 77; 
    
    cambia( &a, &b); 
    
    printf(" a :%d", a);
    printf(" b :%d" , b);
    system("PAUSE");
    
    return 0;
    }
    Se richiedi puntatori allora devi passare i valori per riferimento per cambiarli. E poi se ritorni un intero quando chiami la funzione nel main devi assegnarla ad un intero.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    32
    Quindi , secondo questo esempio , avendo la funzione

    codice:
    void bubbleSort(int *v, int *size){
      
       int i;
       int tmp;
       while(size>0)
       {
          for(i=0;i<size-1;i++)
          {
             if(v[i]>v[i+1])
             {
                tmp=v[i];
                v[i]=v[i+1];
                v[i+1]=tmp;
             }    
          }
          size--;
       }     
       printf("Dopo: ");
       for(i=0;i<size;i++)
       {
          printf("%d ",v[i] );
       }
       printf("\n");
       return 0;
    }
    Per richiamarla potrei fare bubbleSort( &v , &size );???

  4. #4
    In linea di massima si. Ti rispondo così perchè vedo che v è un vettore di interi, quindi bisogna vedere come l'hai inizializzato perchè per i vettori non c'è bisogno di passarli per riferimento. Per size và bene, però quando decrementi size mettici il puntatore (*size--).
    Vi Veri Veniversum Vivus Vici

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    32
    Ho inizializzato v così nel codice main nel quale prendo in input un array dinamico numerico

    int *v=NULL ;

    Ho provato ad apportare la modifica che mi hai detto ma nn va

  6. #6
    Inizializzi v come puntatore e lo imposti a null, ma se non gli allochi la memoria ti attacchi al tram

    v=malloc(sizeof(int)*256);

    Ovviamente quel 256 varia, dipende da quanti elementi ti servono
    Vi Veri Veniversum Vivus Vici

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma il problema qual è?

    Non ho ancora capito la domanda di questo thread ...
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.