Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [C] Piccola curiosità sulla relazione tra array e puntatori

    Recentemente mi è capitato di dover scrivere una piccola funzione in C a cui era passata come parametro una array (chiamato A) di int e la sua dimensione.

    Per scrivere l'algoritmo di questa funzione mi sono dovuto appoggiare ad un nuovo array (chiamato B) dello stesso tipo e della stessa dimensione dell'altro il quale è stato popolato seguendo un certo metodo.
    Ok, a questo punto siccome l'array A ovviamente non è passato alla funzione (con tipo di ritorno void) per valore ma per riferimento mi chiedevo se era possibile far si che A puntasse a B in modo tale da rendere effettivamente più efficiente l'algoritmo ed evitare di creare una funzione che popolasse A con i valori di B.

    Spero di essermi spiegato bene.

    Grazie

  2. #2
    Ci sono alcune cose che non mi sono chiare... se A è l'array originario con i valori inseriti, non può puntare a nulla appunto perchè è un array e non un puntatore, inoltre non ho capito alla fine dici di popolare a con i valori di b.. non capisco cerca di essere più chiaro.
    La curiosità è la fonte della conoscenza.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: [C] Piccola curiosità sulla relazione tra array e puntatori

    Originariamente inviato da Downloader
    Spero di essermi spiegato bene.
    Beh ... non proprio, specialmente in questo punto

    ... A puntasse a B in modo tale da rendere effettivamente più efficiente l'algoritmo ed evitare di creare una funzione che popolasse A con i valori di B.
    Magari facci vedere il codice della funzione e chiarisci commentandola ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Non ho il codice sottomano al momento

    l'array a è popolato con una serie di interi messi in ordine casuale e deve essere ordinato seguendo delle precise specifiche.
    Utilizzo un secondo vettore b per popolare volta per volta il j-esimo elemento dell'array b in seguito alla scansione dell'i-esimo elemento di a.


    Per farla breve l'utente che lancia la funzione si aspetta che il vettore che ha passato come parametro (a) sia ordinato seguendo un certo criterio.
    Il problema è che l'array che è stato ordinato è invece b che è un array dichiarato all'interno della funzione, quindi al termine del ciclo di vita della funzione non potrà più essere riusabile, quindi devo trovare un modo (senza l'uso di funzioni aggiuntiva) di "travasare" il contenuto di b (ovvero l'array ordinato) in a (l'array passato come parametro alla funzione).

    Mi stavo domandando se fosse possibile tramite qualche giochino con i puntatori far si che ad a puntasse a b in modo tale che l'utente possa usufruire del vettore che ha passato come parametro questa volta ordinato.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    L'array B interno alla funzione deve essere allocato dinamicamente (con la malloc).

    Devi dichiarare un puntatore doppio per l'array A e dentro la funzione assegni il puntatore all'array B come valore del doppio puntatore passato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ok, 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 © 2024 vBulletin Solutions, Inc. All rights reserved.