Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Doppio puntatore non funziona

    Salve ragazzi.
    Sto iniziando a programmare in "C" e devo fare alcuni esercizi di preparazione al compito di fondamenti di informatica.
    Volendo esercitarmi con il doppio puntatore, ho creato una funzione che dimensiona ed acquisisce i dati dei vettori:
    codice:
    void vector(int lx, int **vect);
    
    .........
    
    int lx_vett;
    int *vett;
    
    ..........
    
    scanf("%d", &lx_vett);
    
    ........
    
    vector(lx_vett, &vett);
    
    .............
    
    void vector(int lx, int **vect)
    {
    	int count;
    	*vect=(int *)malloc(lx*sizeof(int));
    	for(count=0; count < lx; count++)
    	{
    		printf("\nInserisci il %d° valore del vettore", count+1);
    		scanf("%d", vect[count]);
    		printf("%d", *vect[count]);
    	}
    }
    Il programma viene compilato regolarmente, ma durante l'esecuzione, al secondo valore inserito si blocca e rende errore di segmentazione.
    Che cosa sto sbagliando?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    O scrivi

    codice:
    		scanf("%d", &(*vect)[count]);
    		printf("%d", (*vect)[count]);
    oppure

    codice:
    		scanf("%d", ((*vect)+count));
    		printf("%d", *((*vect)+count));
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Si funziona!
    Ma non capisco il perché
    Cioé se non vado errato, &*ptr mi rende l'indirizzo dell'oggetto puntato da ptr, ovvero il valore di ptr stesso. E' vero che ptr ed &*ptr non sono la stessa cosa, ma il valore restituito dalla variabile ptr e dall'espressione &*ptr dovrebbe essere il solito..

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non è

    &*ptr

    ma

    &(*ptr)[]
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    E' vero!
    &*vect[count] : vect è un array di 'count' puntatori ad intero.
    &(*vect)[count] : vect è un puntatore ad array di 'count' interi

    Mi perdevo in un bicchier d'acqua

    Grazie

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.