Codice dei programmi nella directory:

///File: BucaWinMe.c
//Autore:F. Sacco //Breve descrizione del programma: ATTACCO fuori segmento al OS #include <stdio.h> int main() { char *p; // definizione di un puntatore a carattere p= 0; // p punta all'indirizzo zero di RAM while(1) // sempre vero { *p=0; // Tenta di Azzerare una cella (un carattere o byte) di memoria // questa istruzione genera un SEGMENTATION VIOLATION ed l'OS elimina // il programma in esecuzione (o processo) // NB: fino a Windows me (anno 2000) questo tipo di istruzioni NON // venivano controllate ed il programma faceva cadere tutto il sistema operativo p++; // al prossimo giro azzera cella di RAM successiva } return 0; // qui NON ci arriva mai! }
///(Fine file: BucaWinMe.c)

///File: strlen.c
//Autore:XXXX - Data ultima modifica DD/MM/AA //Breve descrizione del programma: programma vuoto #include<stdio.h> //#include <string.h> int strlen1(char s[]) { int i; for(i=0; s[i]; i++) ; return i; } int strlen2(char *s) { char *p=s; while(*p!='\0') p++; return p-s; } int main() { char s[]="ciao"; printf("%d\n",strlen1(s)); printf("%d\n",strlen2(s)); return 0; }
///(Fine file: strlen.c)

///File: strup.c
// riscrivi con puntatori le funzioni di pag. 28 di LucidiC.pdf #include<stdio.h> void scrivi(char *s) { for(; *s!='\0'; s++) putchar(*s); } void str_up(char *s) /* converte in maiuscolo s */ { for(; *s!='\0'; s++) if ( *s >= 'a' && *s <= 'z' ) *s -= 32; } int main() { char s[80+1]; printf("Stringa->"); gets(s); str_up(s); printf("Stringa->"); scrivi(s); return 0; }
///(Fine file: strup.c)

///File: Leggimi.txt
Vedi anche il file
"RipassoPuntatori.pdf" nella cartella Lezioni
///(Fine file: Leggimi.txt)

///File: EsercizioPuntatoreMatrice.txt
Gioco con i pointer
. Una matrice e' memorizzata in memoria per righe ad indirizzi consecutivi. 1) Definire una matrice di 10 X 10 int 2) Definire un puntatore p al primo elemento della matrice. 3) Inserire i valori da 1 a cento nella matrice, usando solo il puntatore p 3.1) Visualizzare la matrice 4) Scrivere su file la matrice al rovescio utilizzando sempre il puntatore p #define MAX 10 int m[MAX][MAX]; int *p=&m[0][0]; // p punta al primo elemento della matrice int i,j; for(i=0; i < MAX*MAX; i++) // metto elementi nella matrice *p++=i+1; for(i=0; i < MAX; i++) // visualizzo la matrice { for(j=0; j < MAX; j++) printf("%3d ",m[i][j]); printf("\n"); } FILE *fd=fopen("matrice.txt","w"); p--; int i=0; // per invio nel file while(p >= &m[0][0]); { fprintf(fd,*p--); i++; if (i %10 == 0) fprintf(fd,"\n"); }
///(Fine file: EsercizioPuntatoreMatrice.txt)