vuoi
o PayPal
tutte le volte che vuoi
Quando all’interno del main il compilatore incontra la prima chiamata alla unzione non possiede alcuna informazione su
quest’ultima: non sa quanti parametri abbia questa funzione, di che tipo questi siano e nemmeno il tipo di valore
restituito.
Come possono essere passati gli argomenti a una funzione?
Quando una funzione viene chiamata ogni argomento viene calcolato e il suo valore viene assegnato al parametro
corrispondente. Dato che i parametri contengono una copia del valore degli argomenti, ogni modifica apportata ai primi
durante l’esecuzione della funzione non avrà alcun effetto sugli elementi presenti nella main.
Quando gli argomenti sono passati per riferimento la funzione chimante permette alla funzione chiamata di modificare il
valore della variabile originaria.
Che cosa accade quando passo a una funzione l’array?
Quando un vettore unidimensionale viene passato a una funzione, la lunghezza del vettore può non essere specificata.
Per ovviare a questo problema sarà il programmatore a fornire la lunghezza come ulteriore argomento.
A cosa serve l’istruzione return?
Una funzione non void deve usare l’istruzione return per specificare il valore che sarà ritornato. Questo valore spesso è
costituito da una costante o da una variabile.
L’espressione return può comparire anche in funzioni che non restituiscono alcun valore basta che a return non viene
aggiunta nessuna espressione.
Che cosa è un vettore?
Un vettore è una struttura contenente un certo numero di dati, tutti dello stesso tipo. Questi valori chiamati elementi,
possono essere selezionati individualmente tramite la loro posizione all’interno del vettore. Gli elementi del vettore
unidimensionale sono disposti uno dopo l’altro su una sola riga(o su colonne).
Per dichiarare un vettore dobbiamo specificare il tipo e il numero dei suoi elementi. Gli elementi di un vettore possono
essere di qualsiasi tipo e la sua lunghezza può essere specificata da qualsiasi espressione intera costante.
Come s’indicizza un vettore?
Per accedere a un particolare elemento di un vettore dobbiamo scrivere il nome del vettore seguito da un valore intero
racchiuso tra parentesi quadre, questa operazione prende il nome d’indicizzazione del vettore. Gli elementi di un vettore
vengono sempre contati a partire dallo 0 e quindi un vettore di lunghezza n ha un indirizzo che va da 0 a n1.
Come s’inizializza?
A un vettore come a ogni altra variabile può venir assegnato un valore iniziale al momento della dichiarazione.
Le forme più comuni di inizializzatore per un vettore è una lista di espressioni costanti racchiuse tra parentesi graffe e
separate da virgola.
Un altro metodo per inizializzare un vettore è quello di far inserire dallo standard input il valore che verrà memorizzato
nella locazione presa in riferimento.
Che cosa è un vettore multidimensionale?
Un vettore multidimensionale e un vettore che può avere più dimensioni.
Quello più diffuso è il vettore bidimensionale che è composto da n righe e m colonne. Per accedere all’elemento di m
che si trova alla riga iesima e alla colonna jesima dobbiamo scrivere m[i][j].
Inizializzare un vettore multidimensionale?
Per inizializzare un vettore multidimensionale annidando degli inizializzatori unidimensionali.
Ogni inizializzatore interno fornisce i valori per una riga della matrice. Se un inizializzatore non è abbastanza grande per
riempire l’intero vettore multidimensionale, allora gli elementi rimanenti saranno tutti 0.
Che cosa è l’astrazione dei dati?
L’astrazione dei dati consiste nel costruire nuovi tipi di dati a partire da quelli di base.
Che cosa è un puntatore?
I puntatori sono variabili i cui valori sono indirizzi di memoria. Ogni dato presente in memoria possiede un indirizzo, i
puntatori sono indirizzi di dati, nonché dati stessi.
Ogni variabile occupa una o più locazioni di memoria(byte), l’indirizzo del primo byte usato per rappresentare la variabile
è anche l’indirizzo della variabile.
Gli indirizzi delle locazioni di memoria possono essere memorizzate in variabili speciali dette puntatori.
Perché usiamo in puntatori?
Usiamo i puntatori perché ci permettono di accedere a strutture dati anche complesse in modo semplice e compatto.
Consentono la condivisione di dati fra diverse parti del programma, consentono di allocare dinamicamente la memoria e
di definire strutture dinamiche.
Come si dichiara un puntatore?
Una variabile puntatore viene dichiarata allo stesso modo in cui viene dichiarata una variabile normale, l’unica differenza
è che il nome di una variabile puntatore deve essere preceduto da un asterisco.
A cosa serve l’operatore indirizzo?
Dichiarare una variabile puntatore prepara lo spazio per un puntatore ma non lo fa puntare ad alcun oggetto. Provvedere
all’inizializzazione della variaile puntatore prima di utilizzarla è essenziale, un modo per fare ciò è quello di assegnarle
l’indirizzo di qualche variabile utilizzando l’operatore &.
A cosa serve l’operatore di referenziazione?
Quando una variabile puntatore punta a un oggetto, possiamo usare l’operatore asterisco per accedere a quello che è il
contenuto dell’oggetto stesso.
Fino a quando una variabile puntatore punta a un’altra variabile *p sarà un alias per il valore della variabile
Come si passa un puntatore a una funzione?
Quando si utilizza una variabile e si vuole far modificare alla funzione il valore della variabile, si passano gli argomenti
per riferimento e quindi utilizzando i puntatori. Cosi come è possibile passare alla funzione come argomenti i puntatori, è
possibile far ritornare alla funzione anche puntatori.
A cosa serve const ?
Quando invochiamo una funzione e le passiamo un puntatore a una variabile, di solito assumiamo che la funzione
modificherà la variabile. Tuttavia è possibile che la funzione abbia solo la necessità di esaminare il valore passato ma
non quello di modificarlo. Per far capire che la variabile non verrà modificata possiamo usare const per documentare ciò.
LA parola const deve essere messa nella dichiarazione del parametro, prima di specificare il suo tipo.
Che cosa è l’aritmetica dei puntatori?
Se prendiamo un puntatore all’elemento iniziale dell’array A, e k è un intero allora: p + k è per definizione l’indirizzo della
componente k di A.
Il C permette di eseguire addizioni e sottrazioni con i puntatori, questo permette di gestire gli array usando i puntatori al
posto degli indici.
Sommare un intero j a un puntatore p restituisce un puntatore all’elemento che si trova j posizioni dopo l’elemento
puntato originariamente dal puntatore.
Sottrarre un intero j a un puntatore p restituisce un puntatore all’elemento che si trova j posizione prima dell’elemento
puntato originariamente dal puntatore.
Sottrarre un puntatore da un altro puntatore dà come risultato la distanza tra i due puntatori tutto a patto che i puntatori
facciano parte dello stesso array.
Come usare il nome di un vettore come puntatore?
Il nome di un vettore può essere usato come un puntatore al primo elemento del vettore. Questa relazione semplifica
l’aritmetica dei puntatori e rende più versatili sia i vettori che i puntatori, ad esempio se vogliamo modificare un valore
dell’array con un puntatore possiamo far riferimento all’elemento iesimo con l’indirizzo base più la posizione iesima e
assegnargli il valore.
Come si elabora il vettore multidimensionale?
Prendendo come riferimento un vettore bidimensionale, se facciamo in modo che il puntatore p punti a primo elemento
del vettore bidimensionale, allora incrementando il puntatore ripetutamente possiamo visitare tutti gli elementi del vettore
stesso.
Cosa sono le stringhe e come si dividono?
Una stringa letterale è una sequenza di caratteri racchiusa tra doppi apici ed è rappresentata da un puntatore alla
locazione di memoria che contiene il carattere a mentre una costante carattere è rappresentata da un intero
Come si memorizzano le stringhe letterali?
Il C tratta le stringhe letterali come vettori di caratteri. Quando il compilatore C in un programma incontra una stringa
letterale di lunghezza n, questa alloca n + 1 byte di memoria. Quest’area di memoria conterrà i caratteri della stringa con
l’aggiunta del carattere extra per definire la fine della stringa.
Come s’inizializza una variabile?
Una variabile stringa può essere inizializzata nello stesso momento in cui viene dichiarata mettendo tra doppie virgolette
il contenuto scritto.
In questo modo si può anche omettere la dimensione dell’array perchè è il compilatore conterà il numero di caratteri e
riserverà n + 1 byte.
Se l’inizializzatore fosse troppo corto per riempire la varabile stringa il compilatore aggiungerebbe caratteri null
aggiuntivi, al contrario se l’inizializzatore fosse più lungo della variabile stringa non viene ammesso al massimo la stringa
può essere lunga quando l’array e quindi il compilatore non cercherà di mettere il terminatore di fine stringa in quanto vi
è assenza di spazio.
Come si scrive una stringa ?
La printf scrive i caratteri contenuti in una stringa uno alla volta, fino a quando non incontra il carattere null.
Per stampare con la printf una stringa occorre utilizzare la specifica di conversione %s.
Un metodo analogo per effettuare la stampa sarebbe quello di utilizzare la funzione puts che al contario della printf
prende come argomenti solo l’indirizzo della stringa senza specifica di conversione e inoltre aggiunge automaticamente il
carattere \n alla fine di ogni riga.
Come si legge una stringa?
La specifica di conversione %s permette alla scanf di leggere una stringa e di memorizzare all’interno di un vettore di
caratteri. Quando viene invocata la scanf non c’è la necessità di mettere l’operatore & davanti alla variabile, come ogni
vettore, anche la variabile stringa viene trattata come un puntatore quando viene passata alla funzione.
Quando viene invocata, la scanf salta gli spazi bianchi e successivamente legge tutti i caratteri salvandoli in un vettore
fino a quando non incontra un carattere che rappresenta uno spazio bianco.
Per leggere un’ intera riga di input in una sola volta si può utilizzare la funzione gets.
Come accedere ai caratteri di una stringa?
Considerato che il fatto che le stringhe vengono memorizzate come dei vettori, possiamo utilizzare l’indicizzazione per
accedere ai caratteri contenuti all’interno di queste ultime.
Cosa fa la funzione stringcopy?
La string copy copia la stringa passata come secondo argomento all’interno d