Page 588 - Informatica dalla A a Z
P. 588
printf(" Indirizzo di punt_int: %x\n", &punt_int);
printf(" Contenuto di punt_int: %x\n", punt_int);
printf("Valore a cui punta punt_int: %d\n", *punt_int);
} /* Fine di void main(void) */
Esercizio:
Spiegare la differenza tra:
p = q;
e
*p = *q;
Nel primo caso si impone che il puntatore p punti alla stessa variabile a cui punta q.
Nel secondo caso si assegna il valore della variabile puntata da q al valore della variabile
puntata da p.
Puntatori ed Array
In C esiste una parentela stretta tra array e puntatori.
Il nome di un array è una costante (simbolica) di tipo puntatore, avente come valore “l’in-
dirizzo della prima cella di allocazione dell’array”.
Sappiamo che un vettore è un insieme finito di N variabili dello stesso tipo, ognuna identi-
ficata da un indice intero compreso fra 0 e N-1. In C, un vettore rappresenta un puntatore
che punta a un’area di memoria preallocata di dimensione prefissata.
Nota: Il nome di un vettore senza l’indice, punta al suo primo elemento.
Esempio:
int vet[10];
//vet e &vet[0] hanno lo stesso valore
printf(“%p %p”, vet, &vet[0]); //stampa 2 volte lo stesso indirizzo.
Vediamo come si può gestire una stringa attraverso un array di caratteri, prima nella ma-
niera classica e poi con l’uso dei puntatori.
#include <stdio.h>
#include <stdlib.h>
main()
{
int i=0;
char atest[]= “Pippo Baudo”;
char *ptest = “pippo baudo”;
printf(“Stringa con array\n”);
while (atest[i] != ‘\0’)
{
584