Chat del 6 Aprile 2018 dalle 19:30:39 alle 20:11:30
- Stefano Salvi
- Buonasera a tutti (quelli che si connnettono). Cominciate pure.
- Riccardo MIRANDOLA
- Buona sera prof
- Stefano Salvi
- Buona sera!
- Federico DI GIACOMO
- Buonasera prof
- Riccardo MIRANDOLA
- Prof come si fa a puntare un puntatore a un vettore?
- Stefano Salvi
- Mirandola: Per esempio: int v[12]; int *p; p = v;
- Federico DI GIACOMO
- Un esercizio tipo sulle macro di stringhe e caratteri quale potrebbe essere se lo può dire?
- Riccardo MIRANDOLA
- E se invece volessi che il puntatore assumesse il valore di una qualsiasi cella del vettore
- Stefano Salvi
- Un esercixio che usi le macro per sapere se un carattere è maiuscolo, munuscolo, numerico, alfabetico, alfanumerico, oppure per trasformare un carattere in maiuscolo o in m,inuscolo.
- Mirandola: int v[12]; int *p; p = &v[3]; oppure p = v+3;
- Riccardo MIRANDOLA
- Capito. Se io ad esempio scrivessi int v[12] int *p p=v[3] il puntatore punta alla cella 3 del vettore?
- Stefano Salvi
- Fine della storia? Basta così? Nessun\'altra domanda?
- Dominique DONNICI
- Buonasera, non mi è chiara una cosa dello switch case,devo dichiarare una variabile prima?
- Una variabile che serve per il sapere il case da eseguire intendo
- Stefano Salvi
- Donnici: allo switch devi dornire un VALORE. Lo puoi fornire tramite una variabile (che ovviamente andrà precedentemente dichiarata ed inizializzata) oppure tramite una qualunque espressione matematica, anche che contenga chiamate a funzione.
- Dominique DONNICI
- Ah okey,grazie mille
- Andrea POTITO
- Buonasera prof, ma quando devo puntare a una matrice come faccio?
- Riccardo MIRANDOLA
- Prof se io quindi volessi puntare il puntatore non alla prima cella ma a una qualsiasi come faccio? E per spostarlo di n posti?
- Diego LORENZI
- Buonasera, nell\'esempio di Mirandola, come cambia se uso le funzioni? int terzoElemento(int *p) { return *p+3; } e nel main farei terzoElemento(v);
- Stefano Salvi
- Potito: un puntatore a una matrice è un puntatore a righe. Se lo incremento vado avanti di una riga. Ho problemi adesso però ad imbroccare al sintassi giusta per dichiararlo in forma di pntatore.
- Andrea POTITO
- Scusi prof, ma quindi come faccio?
- Stefano Salvi
- Mirandola: nell\'esempio che ti ho sritto prima, p puntava aòlla quarta cella del vettore. Se volessi spostarlo sull\'ottava basterebbe fare p+=4;
- Riccardo MIRANDOLA
- Ok, grazie
- Stefano Salvi
- Lorenzi: Cosa dever ritornare la funzione? Come l\'hai scritta ritorna il valore del primo elemento aumentato di 3. Forse volevi scrivere *(p+3), che ritorna il valore del quarto elemento?
- Andrea POTITO
- Prof, una domanda banale: ma quando ad esempio fa while(a--), quand\'è che termina il while?
- Stefano Salvi
- Potito: ho trovato la sintassi. int m[3][4]; int (*p)[4]; p = m; - questo sembra corretto. In questo caso (p+1) punterà alla seconda riga della matrice.
- Diego LORENZI
- Si grazie, come ha scritto lei, perchè nell\'esempio che stavo studiando c\'era questo passaggio che non mi era chiaro s -= *arr++; ora un po\' di più
- Stefano Salvi
- Potito: se scrivo int a=4; while(a--); il while termina quando a vale 0, quindi al quarto giro, ma prima di terminare decrementa ancora a e quindi all\'uscita del while avremo a = -1;
- Federico DI GIACOMO
- prof potrebbe caricare su moodle gli esempi che aveva scritto oggi alla prima ora?
- Stefano Salvi
- Ok. Quando abbiamo finito qui li carico.
- Federico DI GIACOMO
- Grazie
- Dominique DONNICI
- Quindi nelle matrici il puntatore va per righe e basta? Se dovessi puntare un elemento della seconda riga nella terza colonna?
- Riccardo MIRANDOLA
- Nell esempio che ha fatto a Potito(quello relativo alla matrice) p [] deve per forza avere tra le parentesi quadre un numero uguale al numero di colonne della matrice?
- Stefano Salvi
- Donnnici: se, nelle\'esempio di cui sopra, volessi ottenere il PUNTATORE al secondo elemento della terza riga potrei scrivere int *p2 = &(p+3)[2]; - con la sola matematica dei puntatori non viene... (almneo pare)
- Dominique DONNICI
- Capito grazie
- Stefano Salvi
- Mirandola: assolutamente si, in quanto p è un puntatore ad una RIGA e quindi deve contenere la dimensione della riga.
- Donnici: ho trovato un\'altra strada... int *p2 = *(p+3)+2;
- Riccardo MIRANDOLA
- Ok, grazie
- Dominique DONNICI
- Va bene grazie
- Stefano Salvi
- Io direi di chiudere qui. Copio gli esempi di questamchat nel file e lo metto su Moodle.
- Buona cena, buon riposo e in bocca al lupo.
|