Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [c] funx da rivedere

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    [c] funx da rivedere

    dunque..vorrei fare una funzione che mi faccia puntare un puntatore di un array a un'altra locazione dell'array stesso..avevo pensato a una cosa cosi:

    void funzione_sposta_puntatore (int **z)

    con un puntatore a puntatore, ma passandogli alla funzione come argomento un puntatore dice che i tipi sono incompatibili.

    allora come fare? (nota: la funzione restituisce void) :sgrat:

  2. #2
    Se ho capito bene, vuoi una cosa del genere:

    codice:
    #include <stdio.h>
    
    void sposta (int **, int);
    
    int main (void) {
            int array[] = { 10, 20, 30, 40 };
    	int *p = array;
    	printf ("%d \n", *p);
    	sposta (&p, 2);
            printf ("%d \n", *p);
    	return 0;
    }
    
    void sposta (int **z, int v) {
    	*z = *z + v; 
    }
    Giusto?

    bye

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Non avevo messo l'& per il passaggio del puntatore alla funzione.
    giusto!..grazie. :metallica

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    però adesso ho questa domanda:
    Guardate questa funzione:

    status allocanodo(lista *r_L, record* d)

    Crea un nuovo nodo al cui campo elemento viene assegnato d, e next viene posto a NULL. Il risultato(puntatore al nuovo nodo) viene posto in *r_L
    ----------------------------------------------------------------------
    il puntatore *r_L è visibile solo all'interno della funzione. Come si fa ad accedere al nodo creato quindi?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quel puntatore (visibile solo all'interno della funzione) viene passato per indirizzo alla funzione. Quindi, modificandolo all'interno della funzione, la modifica viene resa visibile anche all'esterno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    E' sbagliata la funzione.

    Devi passare "lista *r_L" per riferimento, e quindi:

    codice:
    lista **r_L

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Non è vero Lele...un puntatore passato per indirizzo non posso passarlo solo a un puntatore a puntatore? se sbaglio, mi fai qualche esempio?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Effettivamente c'è da apportare la correzione proposta da Michele Facchin. Non me n'ero accorto che c'era un solo asterisco.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.