+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

[C/C++] Incremento del valore puntato dal Puntatore

  1. #1
    L'avatar di Bemipefe
    Bemipefe non è in linea Scolaretto
    Aiutatemi o ne esco pazzo!!!

    Intestazione della funzione:
    int fibonacci(int *n , int *fibresult, int *counter , struct fibonacci *structfib )
    {
    printf("%d\n" , *counter);
    
    ....ad un certo punto faccio un incremento ed una chiamata ricorsiva

       if(*counter != *n)
       {
       *counter = (1 + (*counter) );
       printf("%d\n" , *counter); 
       fibonacci(n , counter , fibresult , structfib);
       }
    
    ...notate che stampo il valore di " *counter " sia all'inizio della funzione che al momento prima della ricorsione. " *counter " in oltre è prorpio la variabile incrementata.

    Ora mi date un motivo valido, del perchè la funzione stampa 0 all'inizio poi 1 all'incremento e poi la prima funzione ricorsiva stampa di nuovo 0 ???

    Ho provato a fare dei test con una banale funzione del tipo
    #include <stdio.h>
    #include <stdlib.h>
    
    void main()
    {
    int *n = NULL;
    
    int inc(int *n)
    {
    printf("%d " , *n);
    *n = *n + 1;
    
    inc(n);
    }
    
    n = malloc(sizeof(int));
    *n = 0;
    
    inc(n);
    
    }
    
    ebbene non mi dà lo stesso problema.
    COME MAI ?
    ℹ️ Leggi di più su Bemipefe ...

  2. #2
    L'avatar di sspintux
    sspintux non è in linea Very Important Person Ultimo blog: SqlServer express e connessione DAC
    Quote Originariamente inviato da Bemipefe
    Aiutatemi o ne esco pazzo!!!

    Intestazione della funzione:
    int fibonacci(int *n , int *fibresult, int *counter , struct fibonacci *structfib )
    {
    printf("%d\n" , *counter);
    
    ....ad un certo punto faccio un incremento ed una chiamata ricorsiva

       if(*counter != *n)
       {
       *counter = (1 + (*counter) );
       printf("%d\n" , *counter); 
       fibonacci(n , counter , fibresult , structfib);
       }
    
    ...notate che stampo il valore di " *counter " sia all'inizio della funzione che al momento prima della ricorsione. " *counter " in oltre &#232; prorpio la variabile incrementata.

    Ora mi date un motivo valido, del perch&#232; la funzione stampa 0 all'inizio poi 1 all'incremento e poi la prima funzione ricorsiva stampa di nuovo 0 ???
    .....................
    ....mi sembra che sbagli il passaggio dei parametri alla funzione :

    dichiarazione:
    int fibonacci(int *n , int *fibresult, int *counter , struct fibonacci *structfib )

    chiamata:
    fibonacci(n , counter , fibresult , structfib);
    Ultima modifica di sspintux; 15-07-2006 21:23 
    ℹ️ Leggi di più su sspintux ...

  3. #3
    L'avatar di Bemipefe
    Bemipefe non è in linea Scolaretto
    Nooooo!

    .....che testa di caxxo che sono. Non ci avevo fatto per niente caso. Sono stato tre ore a pensare che c'erano problemi sullo stack e invece.......

    GRAZIE!
    ℹ️ Leggi di più su Bemipefe ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Come incremento il valore di una cella ogni 60 min?
    Da sbambucia nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 16-02-2016, 17:14
  2. Incremento valore in base al tempo
    Da toronto nel forum Microsoft Excel
    Risposte: 10
    Ultimo Post: 16-02-2016, 12:03
  3. Incremento valore numerico
    Da andrea89it nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 10-12-2013, 21:47
  4. Risposte: 1
    Ultimo Post: 27-07-2011, 16:08
  5. MACRO con incremento di valore
    Da xmapix nel forum Microsoft Word
    Risposte: 13
    Ultimo Post: 22-10-2008, 11:02