← Tutti i video

Lavorare con gli Array in C

Guarda su YouTube → 41:55 29 marzo 2026

Descrizione

Questo corso è dedicato agli studenti della 42, e più in generale a tutti coloro interessati ad imparare il linguaggio di programmazione C. Se avete feedback, suggerimenti, cose che non riuscite a capire, vi prego di farmelo sapere nei commenti, in modo da migliorare i futuri episodi. Sto costruendo un luogo per imparare l'informatica, quella seria: - https://esadecimale.it - https://learn.esadecimale.it

Commenti 21

I commenti vengono da YouTube e sono aggiornati periodicamente.

  1. @Giovanni-g2g5c 2 aprile 2026
    Ottimo, trovare qualcuno che spiega così bene che pure io capisca il "C" non è facile. Al prossimo video.
  2. @francescoavellis8030 31 marzo 2026
    Bel video, insegnare in modo approfondito il linguaggio C è importantissimo per formare dei buoni programmatori
  3. @angelomarcone8221 29 marzo 2026 1
    Bel video, ottimo lavoro...grazie
  4. @acac-l9i 29 marzo 2026
    Ti ringrazio tantissimo per questo video
  5. @davidedebenedittis7670 30 marzo 2026
    Grazie🙏
  6. @vikingoffice4762 30 marzo 2026
    Sempre bravo a spiegare. 34:00 vedere il void main e' come un tir che mi passa sopra :) anche se ne vedo l'uso, ma sono della vecchia generazione
    1 risposta
    1. @esadecimale Autore 30 marzo 2026
      In futuro farò dei video appositi su questo per vedere come il programma comunica con il mondo esterno
  7. @acac-l9i 29 marzo 2026 1
    So che potrebbe essere una domanda stupida,ma potresti elaborare su cosa intendi come "metodi per gestire le stringhe"? Ti ringrazio anticipatamente
    2 risposte
    1. @esadecimale Autore 29 marzo 2026
      non è affatto una domanda stupida, in realtà ci vorrò fare proprio dei video specifici. L'idea di base è che ti vai a definire una struct custom che contiene il puntatore all'inizio della stringa (il tipico char *) e anche un campo che indica la lunghezza della stringa. E tramite questa struttura hai molta flessibilità. Esempio in pratica: https://github.com/antirez/sds
    2. @acac-l9i 29 marzo 2026
      Grazie tantissimo della risposta
  8. @AnonWillSqueezeYou 29 marzo 2026
    Scusa ma è giusto fare sizeof(s3)?
    3 risposte
    1. @esadecimale Autore 29 marzo 2026 1
      No non funziona, perché in s3 hai un puntatore, quindi ti becchi sempre il size del puntatore, ovvero 8 in una architettura a 64 bit. Negli altri casi funziona, ovvero funziona con char a[], ma non con char *a. Nel video non me ne accorgo, ma al minuto 31:00 il terzo blocco di codice è tecnicamente sbagliato, in quanto il size è stato calcolato male e quindi leggo 2 byte in più dalla memoria. In generale bisogna stare attenti a utilizzare sizeof con array perché appunto si possono fare questi errori in cui una volta funziona e l'altra no. A questo punto meglio utilizzare strlen() quando si utilizzano stringhe (anche se è ancora meglio sapere la lunghezza della stringa fin da subito ove possibile) Grazie per l'osservazione!
    2. @AnonWillSqueezeYou 29 marzo 2026
      ​@esadecimalegrazie a te per i contenuti molto informativi, farai anche serie più approfondite?
    3. @esadecimale Autore 29 marzo 2026
      ​@AnonWillSqueezeYouin piattaforma ho un corso sull'implementazione di un emulatore (il CHIP-8), ho anche una serie che devo finire sull'implementazione di un piccolo kernel sempre in C. Diciamo sono cose più applicate, penso in questo senso anche più approfondite. Questa serie è per analizzare le basi del linguaggio si, poi in altre lo applico senza spiegare troppo le basi
  9. @ISAIA1994 3 maggio 2026
    ciao leo, stavo riguardando questo video e commento qui, anche se forse non è il posto giusto. Dato che apprezzo il tuo approccio e metodo logico che usi, volevo chiederti se magari qualche volta ti andrebbe di pubblicare un video per dissipare un po' di confusione che sto trovando nel mio cammino di programmazione e cybersecurity. Ovvero, per mia natura e per come sono fatto amo molto le lezioni teoriche e leggere manuali, mi sto rendendo conto che questo mi crea qualche rallentamento e intoppo, ho tanta teoria e poca pratica, come gestisco il binomio studio teorico / pratica? è meglio dedicare più tempo alla pratica o allo studio di concetti concreti? da cosa mi rendo conto se sto facendo progressi o se sto rimanendo fermo allo stesso punto?
    1 risposta
    1. @esadecimale Autore 5 maggio 2026 1
      Ci faccio un video, bella domanda
  10. @GaetanoVirgillito 29 marzo 2026
    Potresti spiegare gli Array di puntatore a puntatore tipo ** *** ?
    4 risposte
    1. @esadecimale Autore 29 marzo 2026
      C'è qualcosa nello specifico che ti confonde? In questi casi bisogna decostruire il tipo step by step: un Array è una sequenza di elementi di un certo tipo, nel caso di puntatori di puntatori hai una sequenza di elementi il cui tipo è puntatori di puntatori. Cosa contiene un tipo del genere? Contiene un valore che rappresenta un indirizzo. Nell'indirizzo puntato troviamo il valore di un'altra variabile, il cui tipo è puntatore a qualcosa. E quindi anche in quest'altra variabile abbiamo un indirizzo che punta ad un'altra zona di memoria che contiene un dato effettivo, il cui tipo base è definito prima di tutti i * La complessità di questi tipi va decomposta per essere compresa
    2. @GaetanoVirgillito 29 marzo 2026
      @esadecimaleNon ho ben chiaro come sono rappresentati questi puntatori di puntatori in memoria. Sono sicuro che nei prossimi video saprai chiarire tutti i miei dubbi!
    3. @KuroiMeansBlack 29 marzo 2026
      @GaetanoVirgillito Un puntatore a puntatore in memoria contiene l'indirizzo dell'altro puntatore, se hai allocato piu' elementi conterra' piu' indirizzi, quando vuoi accedere al puntatore che ti serve modificare dereferenzi il puntatore che si e' salvato l'indirizzo o indirizzi. esempio: int** ptr_ptr, *ptr_ptr stiamo accedendo al indirizzo in memoria che si trova all'indice 0 (puntatore bidimensionale), una volta che abbiamo acceduto a quel indirizzo e' come se avessimo solo un array. Questo si complica un po' se stiamo gestendo un ptr_ptr che contiene piu' indirizzi, pero' se sai come lavorare con l'array ti ci abitui. Il layout e' tipo questo(per colonne) [indirizzo1][indirizzo2][indirizzo3] -> per righe indirizzo1[ ][ ][ ][ ][ ]. indirizzo2[ ][ ][ ][ ][ ] etc, Devi vederla come una griglia suddivisa in colonne e righe, ciascuna colonna e' un puntatore di x bytes e le righe sono i contenuti di questi puntatori, purtroppo non riesco disegneratelo meglio di cosi, pero' spero ti sia stato utile.
    4. @vikingoffice4762 30 marzo 2026
      credo di aver capito cosa intendi. guarda i parametri della funzione main. il secondo parametro puo' essere char* argv[] ma puo' anche essere char** argv. personalmente vedo questa caratteristica, almeno in questo caso, come una "matrice" di caratteri. non sono bravo a spiegare, ma spero di averlo fatto