Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 27 su 27
  1. #21
    Originariamente inviato da Lyn
    Sto sperimentando i puntatori. Ho riletto due volte il capitolo e non ne ho ancora colto l'uso pratico.
    Questa e' una domanda piu' da ../programmazione, ma vabbeh

    Uh, vista la domanda, piuttosto che ridire le solite cose introduttive sui puntatori, provo a cambiare approccio (sperando sia corretto )

    Dato che nel seguito andro' fuori dal seminato, ti invito comunque a rileggere il tuo testo di riferimento

    Un puntatore puo' servire sostanzialmente a dare un'altro nome ad un oggetto, o a fornirne uno ad un oggetto anonimo.
    'Oggetto' in senso lato ovviamente.

    Prendiamo il caso di malloc(): ritorna un blocco anonimo di memoria, quindi per referenziarlo ho bisogno di assegnargli un nome. Infatti se scrivo
    codice:
    malloc(size)
    ottengo il mio blocco di memoria di 'size' byte, ma lo perdo subito perche' non so come referenziarlo.
    Per poterlo 'riutilizzare' in seguito serve dargli un nome:
    codice:
    void *p = malloc(size)
    adesso posso agire sul blocco allocato usando il nuovo nome, ovvero il puntatore

    Oppure posso usare i puntatori per dare un nuovo nome ad un oggetto gia' esistente:
    codice:
    int a = 42;
    int *pa = &a;
    e cosi' via. Utilerrimi i puntatori a funzione, ma questi credo li troverai piu' avanti.

    Ovviamente questo sproloquio^Wdiscorso va integrato e rivisto criticamente alla luce di un buon manuale di C, perche' non intende rispondere alla domanda 'cosa sono e come si usano i puntatori in C' (infatti ho omesso di parlare di deferenziazione, aritmetica dei puntatori, operatore indirizzo-di, ho tralasciato l'esempio classico sulla visione della memoria secondo il C, le relazioni tra array e puntatori, etc. etc.), bensi' alla domanda 'come, in senso lato, puo' essermi utile il concetto di puntatore'.

    Spero di non aver peggiorato la situazione
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  2. #22
    Come sempre grazie

    Dunque, se non ho capito male, un puntatore altro non e` che un modo per agire indirettamente su un oggetto che normalmente non sarebbe gestibile direttamente? Nel caso della ram, io indico alla macchina di tenermi a disposizione uno spazio di memoria tal dei tali, senza preoccuparmi che questo spazio vada da li` a la` e senza doverne conoscere la locazione fisica, giusto?

    In effetti sarebbe piu` da programmazione, qualche moderatore mi sposta per favore?
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  3. #23
    Originariamente inviato da Lyn
    Dunque, se non ho capito male, un puntatore altro non e` che un modo per agire indirettamente su un oggetto che normalmente non sarebbe gestibile direttamente?
    Anche su uno che sarebbe gestibile direttamente.
    codice:
    int a;
    int *pa = &a;
    
    *pa = 42;
    a++;
    
    printf("a = %i\n", a);
    Nel caso della ram, io indico alla macchina di tenermi a disposizione uno spazio di memoria tal dei tali, senza preoccuparmi che questo spazio vada da li` a la` e senza doverne conoscere la locazione fisica, giusto?
    Sostanzialmente direi di si. Ci sarebbe da fare il discorso su stack e heap, ma anche questa volta lascio intenzionalmente la parola ad un manuale di C
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  4. #24
    Originariamente inviato da Ikitt
    Anche su uno che sarebbe gestibile direttamente.
    codice:
    int a;
    int *pa = &a;
    
    *pa = 42;
    a++;
    
    printf("a = %i\n", a);
    Questa pero` e` una pura conseguenza, no? Nel senso, e` si` una possibilita` d'uso ma all'atto pratico un codice simile non troverebbe applicazione, o no?

    Sostanzialmente direi di si. Ci sarebbe da fare il discorso su stack e heap, ma anche questa volta lascio intenzionalmente la parola ad un manuale di C
    Lo stack non mi suona nuovo... first in first out e roba simile... dell'heap non ho ancora sentito parlare, e da una prima occhiata vedo che nel libro non se ne parla. Pero` se ne parla in gapil, mi documentero`.
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  5. #25
    Originariamente inviato da Lyn
    Questa pero` e` una pura conseguenza, no? Nel senso, e` si` una possibilita` d'uso ma all'atto pratico un codice simile non troverebbe applicazione, o no?
    In questa esatta forma dubito (tranne che in esempi sui puntatori), ma come concetto di fondo pero`...

    codice:
    void saturate(int *pi, int max) {
         if(pi != NULL) {
             if(*pi < 0) {
                 *pi = 0;
             } else if(*pi > max) {
                 *pi = max;
             }
         }
    }
    
    int main() {
        int i = do_some_strange_computation();
        
        saturate(&i, 128);
    
        printf("i = %i\n", i);
    
        return 0;
    }
    Questo esempietto e` gia` significativamente piu` vicino alla realta`...

    Lo stack non mi suona nuovo... first in first out e roba simile... dell'heap non ho ancora sentito parlare, e da una prima occhiata vedo che nel libro non se ne parla. Pero` se ne parla in gapil, mi documentero`.
    Quasi: non si parla delle strutture dati, ma delle classi di memorizzazione delle variabili. Sono argomenti trattati in ogni libro decente di C, non preoccuparti

    [edit]
    parlando di strutture dati: lo stack, o pila, e` LIFO (Last In First Out), e` la coda (queue) comunemente intesa che e` FIFO (First In First Out)
    [/edit]
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  6. #26
    linko in programmazione come richiesto

  7. #27
    Grazie andy caps, grazie ancora a Ikitt

    /me va a smanettare
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

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.