lo so che sono in ritardo come commento per il video ma devo assolutamente dirti che spero tu faccia il professore dato che come spieghi tu è perfetto, il mio prof non vale nulla in confronto a te, grazie mille per le tue spiegazioni :)
Ciao quindi la scritta,in un ciclo for rifacendomi ad una struttura (punt+i)->nome Punt[i].nome sono equiscambiabili se tipo devo salvare dei dati in array allocato dinamicamente? Spero di aver fatto una domanda abbastanza chiara
Hai dimenticato * per dereferenziare punt, però si l'idea è quella. La sintassi con array[I] e equivalente a *(array + i), sono due modi di scrivere la stessa cosa (accedere ad un indirizzo di memoria, che è risultato di una somma di un puntatore al primo elemento e un indice) Questo perché in c, dato: int* array = ...; l'evaluation di un espressione: array È &array[0] Ossia, se scrivi il nome dell'array senza dereferenziarlo ti viene ritornato un puntatore al primo elemento (0-esimo) dell'array. Poi questo puntatore è un indirizzo di memoria, e un numero, e puoi aggiungerci i per andare avanti (o indietro), e accedere alla zona di memoria che desideri (nei limiti, se no è una violazione dei bounds) Questo deriva dal concetto che i parametri di puntatore e di array sono equivalenti (in questo aspetto)
@@GetTheCookie si ma ad esempio io ho questa allocazione dinamica ,presa da tema d'esame , Appartamento* punt App=(Appartamento*)malloc(numRighe*sizeof(appartamento)); Poi il ciclo for per scorrere e leggere da file For (i=0;iidentità e al posto di quell'altro &(puntApp+i)->mq ???
ciao ragazzi sono sempre io, domanda al volo, per quanto riguarda la priorità, il postincremento o il preincremento come si comportano con *? pechè in un for di assegnamento a una stringa del valore 'K' per ciascuno dei suoi elementi il libro esemplifica scrivendo il for e sostituendo al posto di arr[i]='K' *s++='K' mantenendo i come contatore. Ha senso farlo e può funzionare? vi ringrazio spero di non essere di disturbo ma mi state dando una grande mano
È una sintassi un po’ bislacca, in questo caso s é il puntatore al tuo array presumo, quindi siccome usi il postincremento funziona normalmente, prima assegni ‘K’ all’elemento i-esimo, e poi incrementi s (e l’incremento é proporzionale alla dimensione del tipo, quindi anche se avessi un array di struct per esempio si allinea). Poi assegni ‘K’ all’elemento i+1-esimo, incrementi, ecc
Questo video ha aiutato veramente tanto nella comprensione dell'aritmetica dei puntatori in C, bel lavoro! :D
i perk di cod zombie sono da vero intenditore hahahahha
lo so che sono in ritardo come commento per il video ma devo assolutamente dirti che spero tu faccia il professore dato che come spieghi tu è perfetto, il mio prof non vale nulla in confronto a te, grazie mille per le tue spiegazioni :)
Grazie a te per le belle parole ❤️
Bravo bravo, una benidizione questo video!
Ottimo video!
grazie mille per il video, mi e' stato molto utile. Potrei chiederti che tema usi per Clion (non capisco se stai usando quello o VS code)?
Sappi che mi stai salvando la vita per gli esami
In bocca al lupo per i tuoi esami!
@@GetTheCookie grazie
ma se io volessi puntare alla cella strlen-3 di un'array all'interno della dichiarazione di una funzione ?
Ciao quindi la scritta,in un ciclo for rifacendomi ad una struttura
(punt+i)->nome
Punt[i].nome sono equiscambiabili se tipo devo salvare dei dati in array allocato dinamicamente? Spero di aver fatto una domanda abbastanza chiara
Hai dimenticato * per dereferenziare punt, però si l'idea è quella. La sintassi con array[I] e equivalente a *(array + i), sono due modi di scrivere la stessa cosa (accedere ad un indirizzo di memoria, che è risultato di una somma di un puntatore al primo elemento e un indice)
Questo perché in c, dato:
int* array = ...;
l'evaluation di un espressione:
array
È
&array[0]
Ossia, se scrivi il nome dell'array senza dereferenziarlo ti viene ritornato un puntatore al primo elemento (0-esimo) dell'array. Poi questo puntatore è un indirizzo di memoria, e un numero, e puoi aggiungerci i per andare avanti (o indietro), e accedere alla zona di memoria che desideri (nei limiti, se no è una violazione dei bounds)
Questo deriva dal concetto che i parametri di puntatore e di array sono equivalenti (in questo aspetto)
@@GetTheCookie si ma ad esempio io ho questa allocazione dinamica ,presa da tema d'esame ,
Appartamento* punt App=(Appartamento*)malloc(numRighe*sizeof(appartamento));
Poi il ciclo for per scorrere e leggere da file
For (i=0;iidentità e al posto di quell'altro &(puntApp+i)->mq ???
?
ciao ragazzi sono sempre io, domanda al volo, per quanto riguarda la priorità, il postincremento o il preincremento come si comportano con *? pechè in un for di assegnamento a una stringa del valore 'K' per ciascuno dei suoi elementi il libro esemplifica scrivendo il for e sostituendo al posto di arr[i]='K' *s++='K' mantenendo i come contatore. Ha senso farlo e può funzionare? vi ringrazio spero di non essere di disturbo ma mi state dando una grande mano
È una sintassi un po’ bislacca, in questo caso s é il puntatore al tuo array presumo, quindi siccome usi il postincremento funziona normalmente, prima assegni ‘K’ all’elemento i-esimo, e poi incrementi s (e l’incremento é proporzionale alla dimensione del tipo, quindi anche se avessi un array di struct per esempio si allinea). Poi assegni ‘K’ all’elemento i+1-esimo, incrementi, ecc
Avete un video in cui spiegate gli array?
Purtroppo no, questa playlist non ha lo scopo di insegnare da zero a programmare, ma solo di spiegare in modo efficace concetti più avanzati.
Gestione file
C'è un video apposito