Linguaggio C - Puntatori
|
|
- Giulio Tommasi
- 7 anni fa
- Visualizzazioni
Transcript
1 Puntatori: I puntatori sono uno dei costrutti più potenti del linguaggio C; permettono ai programmi di realizzare il passaggio per riferimento, di passare funzioni alle funzioni, di accedere direttamente a locazioni di memoria e di gestire strutture dinamiche di dati. I puntatori sono delle variabili i cui valori sono degli indirizzi di memoria. Una variabile fa riferimento direttamene a un valore; mentre un puntatore fa indirettamente riferimento a un valore. Es.: int x=6; x memoria:... 6 indirizzi: L operatore & ( visto nella scanf ) restituisce l indirizzo di memoria di una variabile; che può essere assegnato solo a una speciale categoria di variabili: i puntatori. Sintassi per dichiarare un puntatore: tipo* nome_puntatore; o in modo equivalente: tipo *nome_puntatore; La dichiarazione di un puntatore include il tipo dell'oggetto a cui il puntatore punta; ovvero un puntatore è in grado di memorizzare indirizzi di memoria di variabili di tipo: tipo. Ad esempio non è possibile che un puntatore a int punti a un float e così via.
2 Esempi: int *pointer; // pointer è un puntatore a intero char *ptr; double *x_ptr; Nota : con la semplice dichiarazione, un puntatore a cosa punta? Inizializzazione: int a=10; int *ptr; ptr = &a; // ptr punta ad a ptr a memoria:... indirizzi: L'operatore di indirezione * : si applica a una variabile di tipo puntatore e restituisce il contenuto della variabile puntata. Es.: int x = 10; int* ptr = &x; printf("valore di x = %d", x); *ptr += 20; printf("valore di x= %d", x); // x e *ptr sono degli alias. Quanto vale x?
3 ancora: char a = 'a', b = 'b' ; char* ptr = &a; printf("valore di a = %c e di b = %c", a, b); b=*ptr; printf( Valore di a = %c e di b = %c", a, b); errore tipico: int *ptr; *ptr = 100; // ptr non punta ad alcuna locazione di memoria. In relazione alla inizializzazione dei puntatori abbiamo 3 possibilità: assegnare l indirizzo di una variabile dichiarata. assegnare un altro puntatore esistente (stesso tipo). assegnare valore NULL.
4 Array e Puntatori: In C gli array e i puntatori sono strettamente correlati. Si noti che il nome di un array è una costante è funge da puntatore al suo primo elemento. Ad esempio: char stringa[10]; char *s; scrivere: s = stringa oppure s = &stringa[0] è equivalente Nota: gli elementi di un array possono essere scanditi per mezzo dell indice associato; una cosa equivalente si può ottenere tramite puntatore. Cosicchè: s[0] : indica il valore della prima componente dell array (s + i) : punta alla (i+1)-esima componente del vettore (equivale a &stringa[i]). Es.: s=stringa; stringa[3] = 'c'; printf("stringa[3]= %c\n", stringa[3]); // stampa: c *(s+3) = 'C'; printf("stringa[3]= %c\n", stringa[3]); // stampa: C Nota: essendo il nome dell array una costante non possiamo scrivere: stringa++; // errore! stringa = stringa+2; // errore!
5 Esempio: int buffer[5]; int s*; s = buffer; equivale a: for(i=0; i<5; i++) buffer[i] = i; for(i=0; i<5; i++) { *s = i; s = s+1; for(i=0; i<5; i++) { *s++ = i; for(i=0; i<5; i++) { s[i] = i; Nota: fare attenzione che (s+i) non vada fuori range. Es.: con s = buffer; s -= 2; oppure s = s+6; // errore! Aritmetica dei Puntatori: Siccome un puntatore contiene indirizzi di memoria, le operazioni consentite sono soltanto quelle che hanno senso per un indirizzo; gli operatori sono: // incremento e decremento Nota: l incremento o il decremento di un puntatore dipende dal tipo di dato puntato; poiché ogni tipo di dato occupa un numero diverso di byte in memoria.
6 Ad es. supponiamo che ogni locazione di memoria sia di 1 byte; char occupa 1 byte e int 4 byte: char c; char* s=&c; con s++ // sposta s in avanti di un byte int i=1; int* p = &i; con p++ // s avanza di 4 byte Si noti la differenza: (*s)++ : incrementa di uno il valore della variabile puntata da s. (s++) : incrementa l indirizzo contenuto in s. E possibile effettuare anche sottrazioni tra puntatori che puntano elementi dello stesso array: es.: int v1[5]; int v2[5]; int i; int *ptr; for(i=0; (v1[i] = (i+1)) <= 5; i++); i = &v1[4]-&v1[2]; printf("%d\n", i); // scrive 2 ovvero: (v1 + 4) (v1 + 2) i = &v2[4] - &v1[2]; printf("%d\n", i); // v1 è diverso da v2, risultato imprevedibile! ptr = v2-3; // non corretto, probabilmente punta a elem. di v1.
7 Puntatori e funzioni (passaggio parametri per indirizzo): Il linguaggio C di default implementa il passaggio di parametri per valore. Si ricordi le difficoltà incontrate con la funzione scambio per scambiare il valore di due variabili passate come parametri. In realtà lo scambio avveniva solo tra parametri formali e no attuali. Si può ovviare a questo problema, passando alla funzione gli indirizzi dei parametri attuali. Passare un indirizzo ad una funzione, significa renderle nota la locazione di memoria che contiene l oggetto; cosicchè le modifiche si effettueranno direttamente nei parametri attuali. Es. (funzione scambio): /* Funzione scambio non funzionante */ #include <stdio.h> void scambio(int, int); int main() { int a=5, b=7; printf("prima dello scambio: a= %d e b= %d\n", a, b); scambio(a,b); printf("dopo lo scambio: a= %d e b= %d\n", a, b); return 0; void scambio(int x, int y) { int tmp = x; x = y; y = tmp;
8 Con i Puntatori: /* Funzione scambio OK */ #include <stdio.h> void scambio(int*, int*); int main() { int a=5, b=7; printf("prima dello scambio: a= %d e b= %d\n", a, b); scambio(&a, &b); printf("dopo lo scambio: a= %d e b= %d\n", a, b); return 0; void scambio(int *x, int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; Altra versione, con solo puntatori - da rivedere più avanti: /* Funzione scambio - solo puntatori */ #include <stdio.h> #include <stdlib.h> void scambio(int**, int**); int main() { // int a=5, b=7; int *a = (int*) malloc(sizeof(int)); *a = 5; int *b = (int*) malloc(sizeof(int)); *b = 7; printf("prima dello scambio: *a= %d e *b= %d\n", *a, *b); scambio(&a,&b); printf("dopo lo scambio: *a= %d e *b= %d\n", *a, *b); return 0; void scambio(int **x, int **y) { int *tmp; tmp = *x; *x = *y; *y = tmp; La stessa tecnica (passaggio indirizzo) si può usare con gli array come parametri. Le stringhe in C sono array di caratteri che terminano con \0; pertanto possono essere manipolate con puntatori.
9 Es.: #include<stdio.h> int my_strlen(char* s); int main() { char str[] = "Una stringa di prova"; printf("la lunghezza di: %s e' %d\n ", str, my_strlen(str)); return 0; int my_strlen(char * s){ int i=0; while(*s++) i++; // oppure while(s[i++]); return i-1; return i; Si noti che: int my_strlen(char *s); è equivalente a: int my_strlen(char s[]); La funzione my_strlen si può scrivere anche: int my_strlen(char * s){ char *p=s; while(*p++); return (p-s-1);
10 Le funzioni (predefinite) per la manipolazione delle stringhe (incluse in string.h), operano sempre attraverso i puntatori a carattere. Si noti il prototipo di alcune funzioni: char* strcat(char *string1, const char *string2); // concatena string1 e string2 -> string1 int strlen(const char *string); // restituisce la lunghezza di string escluso il terminatore. Altro esempio: sostituzione di stringhe: #include <stdio.h> void funzione(char *, char *); int main() { char a[] = "stringa da sostituire"; char b[] = "stringa di prova"; printf("'%s'\n'%s'\n\n", a, b); funzione(a, b); printf("'%s'\n'%s'\n\n",a, b); return 0; void funzione(char *p, char *q) { while((*p=*q)!= '\0') { p++; q++; // in forma più compatta: while((*p++=*q++)!= '\0');
11 Esempio con array di altro tipo: #include <stdio.h> #define NUM 10 void carica(int *, int); int main() { int i, c[num]; carica(c, NUM); // perchè passiamo c e non &c? // stampa vettore: for(i=0; i<num; i++) printf("elemento %d = %d\n", i+1, c[i]); return 0; void carica(int* pt, int n) { int i; for(i=0; i< n; i++) { printf("inserisci elemento: "); scanf("%d", &pt[i]); // in alternativa: scanf("%d", (pt + i)); Una funzione può ritornare un puntatore. Questo permette di restituire una struttura dati più complessa rispetto ai tipi di dato semplici come int, char, ecc.
12 Esempio: #include <stdio.h> char* trova(char *str, char c); int main() { char car = 'd'; // carattere da cercare char str[] = "stringa di testo"; if(trova(str, car)) printf("%s", trova(str, car)); else printf("carattere non trovato"); return 0; char* trova(char *str, char c) { while(*str++) if(*str == c) return str; return NULL; Info: esistono anche i puntatori a funzioni; contengono l indirizzo della funzione. Analogamente al nome dell array che punta al primo elemento, il nome della funzione è in realtà l indirizzo di memoria iniziale del codice (blocco di istruzioni) che esegue il compito della funzione. Es.: int (*nomefunc)(parametri) da non confondere con int *nomefunc(parametri) Per approfondimenti ed esempi si rimanda alla documentazione ufficiale.
13 Esercizi: (implementare le seguenti funzioni) char* fromfirstupper(char *); /* ritorna la stringa dal primo carattere maiuscolo, null se non c'è */ char* fromfirstdigit(char *); /* ritorna la stringa dal primo numero, null se non c'è */ char* parsedigits(char *); /* ritorna la stringa di soli numeri, null se non ci sono */ char* parsechars(char* s1, char* s2); /* ritorna una stringa a partire da s1 senza i caratteri compresi in s2 */ char* mysubstring(char* s1, char* s2); /* ritorna la parte di stringa in s1 che fa "match" con s2, null se non c'è */ int* greatesvalues(int* vet, int limit); /* ritorna i valori di vet i cui elementi sono > limit, null se non ci sono */ int firstoccurrenceof(char* s1, char c); /* ritorna la posizione della prima occorrenza di c in s1, -1 se non c'è */
14 Allocazione dinamica della memoria: Grazie all utilizzo dei puntatori, il linguaggio C permette la creazione e la gestione di oggetti dinamici. Mentre gli oggetti statici vengono creati nella fase di definizione, quelli dinamici sono creati durante l esecuzione del programma; ovvero vengono creati o distrutti in fase di esecuzione del programma e non durante la compilazione. La memoria (in C) è divisa in due parti: - Stack: contiene tutto ciò che è statico ( es. int, float, ecc ). - Heap: riservata per gli oggetti dinamici. Funzioni utilizzate per la gestione dinamica della memoria: malloc() : allocazione della memoria free() : rilascio della memoria realloc() : modifica dello spazio allocato Nota: per usare le suddette funzioni, includere il file malloc.h e/o stdlib.h. Particolarmente utile risulta essere l operatore sizeof : restituisce la dimensione del tipo di dato da allocare. void* malloc(size_t size); // prototipo Sintassi: tipodato* ptr = (tipodato *) malloc(sizeof(tipodato)); tipodato: indica il tipo di dato per cui allochiamo memoria ptr: (puntatore) è una variabile di tipo: tipodato * sizeof: restituisce il numero di byte che occupa: tipodato
15 Nota: generalmente si usa il casting (tipodato *), poichè la funzione malloc() restituisce un puntatore generico (void *) che può puntare qualsiasi tipo di dato; con il cast viene assegnato il tipo richiesto. Se la richiesta di allocazione va a buon fine, ptr punta all inizio dello spazio allocato in memoria; altrimenti punta a NULL ( es. memoria esaurita ). Es.: int* ptr = (int *) malloc(sizeof(int)); Abbiamo allocato uno spazio di memoria sufficiente a contenere un intero; esso è raggiungibile soltanto attraverso il puntatore ptr. #include <stdio.h> #include <malloc.h> int main() { int *ptr; ptr = (int *) malloc(sizeof(int)); if(ptr == NULL) { printf("errore in fase di allocazione! \n"); return(-1); // oppure exit(-1); *ptr = 12; (*ptr)++; printf("*ptr vale %d\n", *ptr); // cosa stampa? return 0;
16 Nota: per determinare la dimensione di un tipo di dato non affidarsi a valori di default, ma usare sempre sizeof. Es.: int* ptr = (int *) malloc(4); // non è detto che sia corretto; poiché sizeof(int) potrebbe non essere 4 byte. Esempio: allochiamo più di un elemento; int i, *p; /* allochiamo 10 elementi. */ p = (int *) malloc(10*sizeof(int)); if(p == NULL) exit(-1); // errore in allocazione! for(i = 0; i < 10; i++) *(p + i) = i; // possiamo scorrere le 10 posizioni. for(i = 0; i < 10; i++) printf("*(p + %d) vale %d\n", i, *(p + i)); // cosa stampa?
17 Interessante esempio su stringhe dinamiche: #include <stdio.h> #include <stdlib.h> //#include<malloc.h> #include <string.h> char* my_concat(const char *, const char *); int main (void) { char *p; p = my_concat("abcd","efghi"); printf ("Risultato : %s \n", p); // stampa? return 0; char* my_concat(const char *s1, const char *s2) { char * result; result = (char *) malloc((strlen(s1) + strlen(s2) + 1) * sizeof(char)); if(result == NULL) { printf("out of memory\n"); exit (-1); strcpy(result, s1); strcat(result, s2); return result;
18 Nota: La keyword const non permette modifiche sui parametri attuali. Nota bene: gli oggetti allocati dinamicamente, vengono indirizzati tramite puntatore. Attenzione a non perdere il riferimento, altrimenti gli oggetti non sono più reperibili: int* p = (int *) malloc(sizeof(int)); *p= 20; int i=0; se scriviamo: p = &i; -> ora *p vale 0, perdendo la vecchia locazione. Deallocazione: free(): rilascia o dealloca la memoria precedentemente allocata da una malloc(). Ha effetto solo nei puntatori creati con allocazione dinamica. void free(void* ptr); // prototipo es.: int* ptr = (int *) malloc(sizeof(int)); *ptr= 10; //.. free(ptr); ptr = NULL; // abbiamo rilasciato lo spazio, ma ptr non si sa a cosa punti, allora: Nota: la funzione free non si applica agli array.
19 realloc() Questa funzione permette di modificare (in fase di esecuzione) lo spazio di memoria occupato da un oggetto dinamico già esistente. Consente ad esempio, di definire gli array flessibili. Definito un array, se lo spazio non è sufficiente a contenere i dati, la realloc consente di aggiungere altri blocchi. Il prototipo: void* realloc( void* ptr, size_t size ); Si veda esempio: #include <stdio.h> #include <stdlib.h> int main() { int input, n, count=0; int *numbers = NULL; do { printf("inserire un numero intero (0 - uscita): "); scanf("%d", &input); count++; numbers = (int*) realloc(numbers, count * sizeof(int)); if(numbers==null) { printf("error (re)allocating memory"); exit (1); numbers[count-1]=input; while(input!=0); printf("numeri inseriti: "); for(n=0; n<count; n++) printf("%d ",numbers[n]); free(numbers); return 0;
20 Array di Puntatori: In questo caso, gli elementi dell array sono di tipo puntatore. es.: int* vett[10]; int i=1; vett[5]= &i; // la componente vett[i] è un puntatore *vett[5] = 2; // anche la variabile i varrà 2. char* colori[4] = {"Giallo", "Blu", "Rosso", "Verde"; // Array bidimensionale (4 puntatori a carattere) *colori[2] = "Arancio"; float* a[10]; float x=10.5f; a[6] = &x; *a[6] = 0; // quanto vale x?
21 Puntatori a Puntatori (indirizzamento multiplo): Un puntatore è una variabile che contiene l indirizzo di memoria di un altra variabile; perciò è possibile far uso di puntatori che puntano ad altri puntatori. Sintassi: tipo **variabile; es.: int a, *p, **pp; p = &a; pp=&p; **pp = 10; // avremo che a = 10; e *pp: non è un valore ma un indirizzo PP P A 10 // vedere la stampa: printf("indirizzo di pp= %p, valore= %p\n", &pp, pp); printf("indirizzo di p= %p, valore= %p\n", &p, p); printf("indirizzo di a= %p, valore= %d \n", &a, a);
22 L indirizzamento multiplo, permette di creare dinamicamente array bidimensionali: Ad esempio, creiamo un array 3*4: int **a, i; a = (int **) malloc(3 * sizeof(int *)); for(i=0; i<3; i++) a[i] = (int *) malloc(4 * sizeof(int));. a[1][2]= 10; Esercizi: - Implementare la funzione per allocazione dinamica di matrici (tutte le caselle inizializzate a 0); prototipo: float **matrice(int nr, int nc); - Scrivere una funzione che restituisca il valore max di una matrice passata come parametro: prototipo: int trova( int **matr, int nr, int nc);
23 Linguaggio C Funzione main() Completamento funzione main() La funzione main(), viene eseguita all inizio del programma. Finora l abbiamo vista ed utilizzata nella sua forma più semplice; non abbiamo passato parametri e non abbiamo tenuto conto del valore di ritorno. Lo standard definisce tre dichiarazioni (prototipi) per la funzione main: int main(void) int main(int argc, char *argv[]) int main(int argc, char *argv[], char *envp[]) int argc: indica il numero di parametri passati al programma in fase di avvio, compreso il nome del programma. char *argv[]: contiene tutti gli argomenti sotto forma di stringhe (il nome del programma corrisponde ad argv[0]). char *envp[]: contiene le variabili di ambiente del sistema operativo. La funzione main, ritorna un valore int, che indica l esito dell esecuzione: 0: esecuzione completata correttamente. -1: si sono verificati problemi. Nota: Per passare i parametri ad un programma basta, alla riga di comando, specificarli di seguito al nome del programma (separati da uno spazio).
24 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; printf("nome del programma: '%s'\n",argv[0]); // argv[0] esiste sempre. printf("al programma sono stati passati %d parametri.\n", argc-1); if(argc > 1) for(i = 1; i < argc; i++) printf("parametro argv[%d] = %s\n", i, argv[i]); else printf("nessun parametro passato.\n"); return 0; Esecuzione: c:\> nomefile parametro1 parametro2. Nota: I nomi argc, argv sono convenzionali, si possono cambiare. Si noti l equivalenza: int main(int argc, char *argv[]); int main(int argc, char **argv); Utilizzo: se abbiamo un programma che fa operazioni di I/O su file, il nome di quest ultimo lo possiamo specificare come parametro al momento del lancio.
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliPuntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliPuntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliPuntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a
Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime
DettagliPuntatori (in C) Emilio Di Giacomo
Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per
DettagliIl linguaggio C Puntatori
Il linguaggio C Puntatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - puntatori 2 Ringraziamenti Questi
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011
Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali
DettagliAllocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()
Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliLaboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014
Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array
DettagliLinguaggio C - Array. Array: tipo nome_array[num_elementi]
Linguaggio C - Array Array: Gli array o vettori sono delle strutture dati in grado di contenere un insieme di valori tutti dello stesso tipo. Un array lo possiamo immaginare come un contenitore suddiviso
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliVerso i puntatori: Cosa è una variabile?
Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
DettagliPuntatori. Fondamenti di Programmazione
Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale
DettagliArray. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliStruct, enum, Puntatori e Array dinamici
Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliArray. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali
MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliEsercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliPuntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori
Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per
DettagliPOINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria.
POINTERS Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. Es. Sia y una variabile intera di valore e sia yptr una variabile pointer avente come valore l indirizzo di y.
DettagliI puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliImplementazione di Liste puntate
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Implementazione di Liste puntate 2 1 Indice Liste puntate semplici: Gli elementi sono logicamente
DettagliUna stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
DettagliL'allocazione dinamica della memoria
L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria
DettagliEsercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliDefinizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliAllocazione statica della memoria
2015 - Roberta Gerboni 1 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x=
DettagliIl puntatore. Il puntatore
Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliLinguaggio C: puntatori
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa
DettagliProf.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap
Puntatori e Heap 1.Cosa Sono i Puntatori? I puntatori sono fondamentalmente delle variabili, come quelle intere, reali e carattere. Tuttavia, l unica differenza consiste nel fatto che essi non contengono
DettagliIl linguaggio C. Puntatori e Array
Il linguaggio C Puntatori e Array Puntatori I puntatori sono variabili i cui valori sono indirizzi di locazioni in cui sono memorizzate altre variabili architettura a 32 bit: 232-1 indirizzi, ma non si
DettagliOperazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
DettagliPuntatori in C Lucidi della Pof.ssa Pazienza
Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *
DettagliInformatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
DettagliIntroduzione al C. Ancora puntatori, allocazione dinamica, e tipi derivati
Introduzione al C Ancora puntatori, allocazione dinamica, e tipi derivati 1 Array di caratteri Non esiste in C un tipo di dato predefinito per le stringhe Le stringhe sono rappresentate come array di caratteri.
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria Allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 Allocazione dinamica
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliPrecedenza e associatività. Complementi sul C - 2. Esempi. Esempi
Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >
DettagliCompendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)
Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
DettagliLa gestione della memoria
La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliIl linguaggio C Strutture
Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi
DettagliIntroduzione al C. Unità 8 Stringhe
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, A. Pennisi, S. Peluso, S. Salza Sommario Unità 8 Array di
DettagliArray multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
DettagliSTRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliEsercizi di programmazione in linguaggio C English Dictionary
Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliLinguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliI puntatori (richiamo)
I puntatori (richiamo) Puntatori Un puntatore è una variabile che assume come valore un indirizzo in memoria L uso dei puntatori permette di: mantenere riferimenti ad altre variabili (è un punto di accesso
DettagliAllocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica
Allocazione dinamica della memoria Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Allocazione della memoria Il termine allocazione viene utilizzato per indicare l assegnazione di un blocco
DettagliArray Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione
Array Tipi di dato semplici e strutturati i tipi di dato visti finora erano tutti semplici: int, char, float,... i dati manipolati sono spesso complessi (o strutturati) con componenti elementari o strutturate
DettagliIl blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:
Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i
DettagliLinguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliLezione 8. Sottoprogrammi
Lezione 8 Il linguaggio C: Sottoprogrammi e Funzioni I puntatori Input/Output su file Sottoprogrammi Per risolvere un problema si può scomporlo in problemi più semplici e comporre le loro soluzioni in
DettagliOttenere una modifica del parametro attuale
Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)
DettagliConsideriamo un vettore allocato dinamicamente
Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero
DettagliSi possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).
Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,
DettagliArray k-dimensionali
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
DettagliInside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays
Pointers: Puntatori (I) Le variabili finora incontrate sono caratterizzate da un nome (o identificativo), un tipo, ed occupano un area di memoria di dimensione dipendente dal tipo. Per accedere ad una
DettagliLinguaggio C - Strutture
Strutture: Le strutture (talvolta chiamate aggregati), così come gli array, sono tipi di dati derivati. Indicano collezioni di variabili collegate sotto un unico nome. Le strutture possono contenere variabili
DettagliPassaggio parametri puntatore
Passaggio parametri puntatore Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliPassaggio parametri puntatore Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Lorenzo Dusty Costa Federico Paolo Kircheis 30 Novembre 2011 1 Introduzione alle memoria dinamica Uno degli inconvenienti che spesso si incontrano nell'uso degli array
DettagliParametri Formali di una Funzione e Record di Attivazione
Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali
DettagliEsercitazione 9. Array come puntatori. Aritmetica dei puntatori. Array multidimensionali. Ricapitolazione su Ricorsione e Array.
Esercitazione 9 Array come puntatori Aritmetica dei puntatori Array multidimensionali Ricapitolazione su Ricorsione e Array Stringhe Array come puntatori Gli array e i puntatori in C sono strettamente
Dettagli