esercitazioni di informatica (civ) - puntatori · esercitazioni di informatica (civ) puntatori...
TRANSCRIPT
Esercitazioni di Informatica (CIV)Puntatori
Andrea Romanoni
e-mail: [email protected]: http://home.deib.polimi.it/romanoni/
19 novembre 2015
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;
Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULL
NULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;
PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULL
NULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;
putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULL
NULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;
putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero);
/* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1);
/* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;
putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;
putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero);
/* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;
*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;
*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;
putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;
putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero);
/* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizi sui puntatoriUso elementare dei puntatori
#include <stdio.h>#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero, ArrInt[5];char ArrChar[16];int *PuntInt1, *PuntInt2;char *PuntChar;
PuntInt1 = NULL;Intero = 7;PuntInt1 = &Intero;putint(Intero); /* stampa "7" */putint(*PuntInt1); /* stampa ancora "7" */*PuntInt1 = 2;putint(Intero); /* stampa "2" */PuntInt2 = PuntInt1;*PuntInt2 = 4;putint(Intero); /* stampa "4" */PuntChar = &Intero;
}
NULLNULL7
&Intero7
&Intero2
&Intero2
PuntInt1
&Intero2
&Intero
&Intero4
&Intero
&Intero4
&Intero&Intero
Intero:PuntInt1:
PuntInt2:PuntChar:
Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;
putint(ArrInt[0]);/* stampa "11" */
*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];
putint(*PuntInt2); /* stampa unvalore imprevedibile, */
ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2);
/* stampa unvalore imprevedibile, */
ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray e puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int ArrInt[5];int *PuntInt1, *PuntInt2;
PuntInt1 = ArrInt;
ArrInt[0] = 11;putint(ArrInt[0]);
/* stampa "11" */*ArrInt = 22;putint(ArrInt[0]);
/* stampa "22" */*(ArrInt + 2) = 33;putint(ArrInt[2]);
/* stampa "33" */
PuntInt1 = &ArrInt[2];putint(*PuntInt1);
/* stampa ancora "33" */
PuntInt2 = &ArrInt[10];putint(*PuntInt2); /* stampa un
valore imprevedibile, */ArrInt[25] = 1000;return 0;
}
Ricordate:ArrInt =&ArrInt[0]
&ArrInt[0]
11
&ArrInt[0]
22
&ArrInt[0]
22
33
&ArrInt[0]
22
33
&ArrInt[2]
22
33
&ArrInt[2]&ArrInt[10]
ArrInt[0]:ArrInt[1]:ArrInt[2]:ArrInt[3]:ArrInt[4]:
PuntInt1:PuntInt2:
Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;
putstring(ArrChar);/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];
putstring(PuntChar);/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;
putstring(PuntChar);/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;
putstring(PuntChar);/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));
/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriArray di caratteri e stringhe
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){char ArrChar[10];char* PuntChar;
strcpy(ArrChar, "123456789");
ArrChar[7] = ’\0’;putstring(ArrChar);
/* stampa solo "1234567"*/
PuntChar = &ArrChar[3];putstring(PuntChar);
/* stampa "4567"*/
PuntChar = ArrChar + 3;putstring(PuntChar);
/* stampa "4567" */
++PuntChar;putstring(PuntChar);
/* stampa "567" */
putstring(*(ArrChar + 6));/* stampa "7" */
return 0;}
Ricordate:ArrChar =&ArrChar[0]
123456789
’\0’
1234567
’\0’9
’\0’
1234567
’\0’9
’\0’&ArrChar[3]
1234567
’\0’9
’\0’ArrChar+3
1234567
’\0’9
’\0’ArrChar+4
ArrChar[0]:ArrChar[1]:ArrChar[2]:ArrChar[3]:ArrChar[4]:ArrChar[5]:ArrChar[6]:ArrChar[7]:ArrChar[8]:ArrChar[9]:
PuntChar:Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;*(*PuntPuntInt) = 100;PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero&Intero&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;
PuntPuntInt = &PuntInt1;*(*PuntPuntInt) = 100;PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero
&Intero&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;
*(*PuntPuntInt) = 100;PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero
&Intero
&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;
*(*PuntPuntInt) = 100;PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero&Intero
&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;*(*PuntPuntInt) = 100;
PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero&Intero
&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;*(*PuntPuntInt) = 100;
PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero&Intero&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;*(*PuntPuntInt) = 100;PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt);
/* stampa "100" */
return 0;}
&Intero&Intero&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori a puntatori
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int Intero;int *PuntInt1;int** PuntPuntInt;int*** PuntPuntPuntInt;
PuntInt1 = &Intero;PuntPuntInt = &PuntInt1;*(*PuntPuntInt) = 100;PuntPuntPuntInt = &PuntPuntInt;putint(*(*(*PuntPuntPuntInt)));putint(***PuntPuntPuntInt); /* stampa "100" */
return 0;}
&Intero&Intero&Intero&PuntInt1
100&Intero
&PuntInt1
100&Intero
&PuntInt1&PuntPuntInt
Intero:PuntInt1:
PuntPuntInt:PuntPuntPuntInt:
Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;
*PuntInt1 = 111;*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;
*PuntInt1 = 111;*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;
*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;
*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;*PuntChar = ’z’;
putint((*PuntStruttura).CampoInt);/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;*PuntChar = ’z’;
putint((*PuntStruttura).CampoInt);/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */
putint(PuntStruttura->CampoChar);
/* stampa "z" */
return 0;}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio sui puntatoriPuntatori e strutture
#include "libreria.h"#include <string.h>
int main(int argc, char *argv[]){{
int *PuntInt1;char* PuntChar;
typedef struct {char CampoChar;int CampoInt;
} TipoStruttura;
TipoStruttura S;TipoStruttura *PuntStruttura;
PuntStruttura = &S;PuntInt1 = &(S.CampoInt);PuntChar = &S.CampoChar;*PuntInt1 = 111;*PuntChar = ’z’;putint((*PuntStruttura).CampoInt);
/* stampa "111" */putint(PuntStruttura->CampoChar);
/* stampa "z" */return 0;
}
&(S.CampoInt)&S.CampoChar
&S
&(S.CampoInt)&S.CampoChar
111&S
&(S.CampoInt)&S.CampoChar
’z’111&S
PuntInt1:PuntChar:
S.CampoChar:S.CampoInt:
PuntStruttura:
Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 14
Esercizio 1Palindroma?
Chiedete all’utente l’immissione di immettere una parola e controllate chesia palindroma per mezzo di una funzione.
Andrea Romanoni Esercitazioni di Informatica (CIV) 7 / 14
Esempi di utilizzo di strutture e puntatori
Create un tipo di dato CD. Un CD ha un nome di al massimo 50 caratteri,e una durata in secondiCreate un tipo di dato archivio. Un archivio è una lista sequenziale di almassimo 100 CD
Create una funzione per popolare l’archivio con due CD1 nome: primoCd; durata: 36002 nome: secondoCd; durata: 4600
Create una funzione che stampi un archivioRichiamate le due funzioni dal main
Andrea Romanoni Esercitazioni di Informatica (CIV) 8 / 14
Esame del 21 luglio 2014Testo
Si implementi un sistema per la gestione della classifica del rankingmondiale dei giocatori di scacchi.
Un giocatore è modellato daI un array di caratteri contenente il suo nome e cognome (massimo 50
caratteri)I i suoi anni di inizio e fine attività, rappresentati da interi. L’ anno di
fine attività è impostato a -1 nel caso il giocatore sia ancora attivoI il suo rating ELO (un intero senza segno)
Una classifica è un vettore di puntatori a giocatore di 30elementi.Una torneo è rappresentato come una lista sequenziale, contenenteal più 60 puntatori ai giocatori partecipanti e una lista sequenziale dialtrettanti interi rappresentanti la posizione ottenuta dal giocatoreal torneo.Un archivio è costituito da una lista sequenziale di al più 1000giocatori, che si assume contenerne almeno 100.
Andrea Romanoni Esercitazioni di Informatica (CIV) 9 / 14
Esame del 21 luglio 2014Definizione dei tipi di dato – Punti 1
Definire i tipi di dato definire i tipi di dato giocatore, archivio,classifica, torneo.
Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 14
Esame del 21 luglio 2014Definiamo i tipi
#define MAX_CHAR 50#define NUM_GIOCATORI 30#define MAX_GIOCATORI_TORNEO 60#define MAX_GIOCATORI 1000
typedef struct {char nome[MAX_CHAR];char cognome[MAX_CHAR];int anni_attivita;unsigned int rating;
} giocatore;
typedef giocatore*classifica[NUM_GIOCATORI];
typedef struct {giocatore* g[MAX_GIOCATORI_TORNEO];int n;
}lista_giocatori;
typedef struct {int pos[MAX_GIOCATORI_TORNEO];int n;
}lista_posizioni;
typedef struct {lista_giocatori lg;lista_posizioni lp;
}torneo;
typedef struct {giocatori g[MAX_GIOCATORI];int n;
}archivio;
Andrea Romanoni Esercitazioni di Informatica (CIV) 11 / 14
Esame del 21 luglio 2014Definizione di prototipi di funzione – Punti 2
Si esplicitino le dichiarazioni dei soli prototipi delle seguenti funzioni:
aggiorna_archivio: riceve l’ archivio dei giocatori e un torneo,aggiorna il rating ELO dei giocatori presenti al torneo in base allaposizione ottenuta.ottieni_migliori: riceve l’ archivio dei giocatori e unaclassifica, aggiorna la classifica in modo che punti ai migliori30 giocatori dell’ archivio.stelle_nascenti: riceve una classifica e stampa a video i 5migliori giocatori in attività da meno di 2 anni.
Andrea Romanoni Esercitazioni di Informatica (CIV) 12 / 14
Esame del 21 luglio 2014Definizione di prototipi di funzione – Punti 2
void aggiorna_archivio(archivio *a, torneo t)
void ottieni_migliori(archivio a, classifica *c)
void stelle_nascenti(classifica c)
Andrea Romanoni Esercitazioni di Informatica (CIV) 13 / 14
Esame del 21 luglio 2014Implementazione – 16 Punti
Esercizi di implementazione:Si implementi la funzione aggiorna_archivio. Per ogni giocatore presente altorneo, ovvero quelli puntati dai puntatori del torneo, il nuovo ELO rating ècalcolato come ELOprecedente + 10× (posizione − b numero partecipanti
2 c). Nel caso unaggiornamento del rating ELO lo porti ad essere negativo, esso è posto a 0. (3Punti)Si implementi la funzione ottieni_migliori.Si implementi la funzione stelle_nascenti che riceve una classifica e stampaa video i 5 migliori giocatori in attività da meno di 2 anni. (8 Punti) Nel caso igiocatori con meno di due anni di attività siano meno di 5, stampa solamentequelli presenti. (5 Punti)
Andrea Romanoni Esercitazioni di Informatica (CIV) 14 / 14