Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [c]sono fregato! help! :(

    codice:
    #include <stdio.h>
    
    int change(int);
    main(){
    	int cane=5;
    	printf("now cane is %d",cane);
    	printf("u can change it!");
    	change(cane);
    	printf("u changed cane into %d",cane);
    	return 0;
    }
    int change(int dog){
    	scanf("%d",&dog);
    	printf("u choose %d",&dog);
    	return dog;
    
    }
    PERCHE' NN VA??? PERCHE'!!

  2. #2
    U are AMERICAN ?

    codice:
    #include <stdio.h>
    
    void change(int &i);
    
    void main(){
        int i = 5;
        printf("i = %d\n", i);
        printf("change()\n");
        change(i);
        printf("i = %d\n", i);
    }
    
    void change(int &i){
    	i = 7;
    }
    P.S. ora non ricordo se il codice (reference &) valga anche in C.
    ...Terrible warlords, good warlords, and an english song

  3. #3
    scusa ma quello che ho scritto io è proprio sbagliato????e cmq io volevo fare una cosa diversa...cioè far diventare il valore quello che dico io dallo scanf...

  4. #4
    codice:
    #include <stdio.h>
    
    void change(int &i, int j);
    
    main(){
    	int i=5, j=1;
    	printf("i = %d, j = %d\n", i, j);
    	printf("change()\n");
    	change(i, j);
    	printf("i = %d, j = %d\n", i, j);
    	return 0;
    }
    
    void change(int &i, int j){
    	i = 50; // cambio il valore di i in main()
    	j = 1000; // non cambio il valore di j in main()... ma solo della copia di j all'interno della funzione change()
    }
    ...Terrible warlords, good warlords, and an english song

  5. #5
    cioè rispondimi un attimo, ciò che ho scritto io sembra completamente sbagliato, eppure teoricamente non lo è
    tu mi hai fatto degli altri esempi diversi perchè io lavoro su funzioni int tu su void...che mi sembra diverso...

  6. #6
    codice:
    #include <stdio.h>
    
    void change(int &i, int j);
    
    main(){
    	int i=5, j=1;
    	printf("ORIGINE i = %d, j = %d\n", i, j);
    	printf("change()\n");
    	change(i, j);
    	printf("DOPO CHANGE i = %d, j = %d\n", i, j);
    	return 0;
    }
    
    void change(int &i, int j){
    	printf("Inserisci un nuovo valore per i :");
    	scanf("%d", &i);
    	printf("Inserisci un nuovo valore per j :"); // j NON CAMBIA IN MAIN() 
    	scanf("%d", &j);
    }
    ...Terrible warlords, good warlords, and an english song

  7. #7
    forse non mi sono spiegato...il fatto che io lavori su funzioni int mi permette di cambiare il valore di i nel main, o no?
    codice:
    #include <stdio.h>
    
    int change(int &i);
    
    void main(){
        int i = 5;
        printf("i = %d\n", i);
        printf("change()\n");
        change(i);
        printf("i = %d\n", i);
    }
    
    int change(int &i){
    
    	scanf("%d",&i);	  return i;
    }
    questo algoritmo funziona ma non capisco:
    1)perchè nel prototipo devo inserire la variabile, cosa che non si fa mai...
    2)perchè devo lavorare sugli indirizzi (&i) al posto dei valori!

  8. #8
    allora... (lasciando perdere il prototipo, che è esatto in entrambi i modi)

    se tu vuoi chiamare una funzione che ti cambi il valore di un intero, char, ecc...

    devi passare alla FUNZIONE l'indirizzo di tale variabile
    si chiama passaggio per riferimento o sempl. reference.

    Se invece vuoi cambiare il valore della variabile (o copia di tale variabile) soltanto all'interno della funzione chiamata
    passi la variabile per valore (cioè passi alla funzione il valore della variabile) e non il suo indirizzo in memoria.

    IN BREVE:

    Se tu vuoi che la funzione "cane()" cambi in MAIN()
    la variabile passata devi utilizzare un reference ...(int &j)

    Se invece vuoi cambiare il valore della variabile
    passata alla funzione (copia della variabile) soltanto
    all'interno della funzione utilizzi il passaggio per valore ...(int i)

    Da quello che ho notato nel tuo codice
    mi è parso di capire che tu voglia cambiare in main()
    il valore della variabile passata alla funzione change()...

    Il mio codice è un semplice (didattico) esempio di entrambe
    i casi
    ...Terrible warlords, good warlords, and an english song

  9. #9
    nel tuo specifico caso, prova questi 2 esempi e nota la differenza:

    codice:
    #include <stdio.h>
    
    int change(int);
    main(){
    	int cane=5;
    	printf("MAIN ()cane = %d\n",cane);
    	change(cane);
    	printf("MAIN() cane = %d\n",cane); // NON CAMBIATO
    	return 0;
    }
    int change(int dog){
    	printf("Nuovo valore per cane : ");
    	scanf("%d", &dog);
    	printf("CHANGE() cane = %d\n", dog);
    	return dog;
    
    }

    e


    codice:
    #include <stdio.h>
    
    int change(int);
    main(){
    	int cane=5;
    	printf("MAIN ()cane = %d\n",cane);
    	printf("MAIN() cane = %d\n",change(cane)); // CAMBIATO
    	return 0;
    }
    int change(int dog){
    	printf("Nuovo valore per cane : ");
    	scanf("%d", &dog);
    	printf("CHANGE() cane = %d\n", dog);
    	return dog;
    
    }
    ...Terrible warlords, good warlords, and an english song

  10. #10
    grazie sei un mito!ora ho capito...bastava mettere il change nella printf!!
    certo che i tipi ke hanno inventato il c potevano anke fare una cosa un po' più elastica...per una cavolata mi è crollato il mondo

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