From dd6a1b1bbb888a0d2cb08307623fd0e1365eedd4 Mon Sep 17 00:00:00 2001 From: HORVILLE Ewen Date: Tue, 12 Oct 2021 14:13:07 +0200 Subject: [PATCH] TP13 Adresses --- APL1.1/TP13/alphabet.rep | 1 + APL1.1/TP13/cartographie.c | 22 ++++++++++++++++++++++ APL1.1/TP13/conversions.c | 12 ++++++++++++ APL1.1/TP13/conversions.rep | 2 ++ APL1.1/TP13/etapes.c | 21 +++++++++++++++++++++ APL1.1/TP13/mort-vivant.rep | 3 +++ 6 files changed, 61 insertions(+) create mode 100644 APL1.1/TP13/alphabet.rep create mode 100644 APL1.1/TP13/cartographie.c create mode 100644 APL1.1/TP13/conversions.c create mode 100644 APL1.1/TP13/conversions.rep create mode 100644 APL1.1/TP13/etapes.c create mode 100644 APL1.1/TP13/mort-vivant.rep diff --git a/APL1.1/TP13/alphabet.rep b/APL1.1/TP13/alphabet.rep new file mode 100644 index 0000000..fd39ac1 --- /dev/null +++ b/APL1.1/TP13/alphabet.rep @@ -0,0 +1 @@ +Le programme va afficher l'alphabet avec une lettre sur deux étant une minuscule et l'autre étant une majuscule car p va prendre en premier l'adresse de min, ensuite la condition va se ré-itérer et p va prendre l'adresse d'une majuscule etc... \ No newline at end of file diff --git a/APL1.1/TP13/cartographie.c b/APL1.1/TP13/cartographie.c new file mode 100644 index 0000000..e6e6825 --- /dev/null +++ b/APL1.1/TP13/cartographie.c @@ -0,0 +1,22 @@ +#include +#include + +int main(int argc, char * argv[]) { + float a = 1.0f; + double b = 2.0; + long double c = 3.0L; + char d = 'd'; + short int e = 5; + int f = 6; + long long unsigned int g = 7ULL; + + printf("%p\n", &a); + printf("%p\n", &b); + printf("%p\n", &c); + printf("%p\n", &d); + printf("%p\n", &e); + printf("%p\n", &f); + printf("%p\n", &g); + return EXIT_SUCCESS; +} + diff --git a/APL1.1/TP13/conversions.c b/APL1.1/TP13/conversions.c new file mode 100644 index 0000000..3551aab --- /dev/null +++ b/APL1.1/TP13/conversions.c @@ -0,0 +1,12 @@ +#include +#include +#include + +int main(int argc, char * argv[]) { + double n = M_PI*2; + long long int* p = (long long int*) &n; + printf("π = %lldLL\n", *p); + + return EXIT_SUCCESS; +} + diff --git a/APL1.1/TP13/conversions.rep b/APL1.1/TP13/conversions.rep new file mode 100644 index 0000000..5be9146 --- /dev/null +++ b/APL1.1/TP13/conversions.rep @@ -0,0 +1,2 @@ +La valeur de pi est réinterprétée sous forme de double dans le premier example. +Dans le programme inclus, le processur inverse est utilisé, on prend la valeur de pi sous forme double et on la réinterprète sous forme de long long int. \ No newline at end of file diff --git a/APL1.1/TP13/etapes.c b/APL1.1/TP13/etapes.c new file mode 100644 index 0000000..dfe7704 --- /dev/null +++ b/APL1.1/TP13/etapes.c @@ -0,0 +1,21 @@ +#include +#include + +int main(int argc, char * argv[]) { + int a = 1, b = 2, c = 3; + int *p, *q; + + // -> veut dire "pointe vers" donc p -> a veut dire p pointe vers a. + + p=&a; // a = 1 b = 2 c = 3 ; p -> a ; q -> NULL + q=&c; // a = 1 b = 2 c = 3 ; p -> a ; q -> c + *p=(*q)++; // a = 3 b = 2 c = 4 ; p -> a ; q -> c + q=&b; // a = 3 b = 2 c = 4 ; p -> a ; q -> b + *p-=*q; // a = 1 b = 2 c = 4 ; p -> a ; q -> b + *p*=*q; // a = 2 b = 2 c = 4 ; p -> a ; q -> b + a=++*q**p; // a = 6 b = 3 c = 4; p -> a ; q -> b + p=&a; // a = 6 b = 3 c = 4; p -> a ; q -> b + *q=*p/(*q); // a = 6 b = 2 c = 4; p -> a ; q -> b + return EXIT_SUCCESS; +} + diff --git a/APL1.1/TP13/mort-vivant.rep b/APL1.1/TP13/mort-vivant.rep new file mode 100644 index 0000000..098eafb --- /dev/null +++ b/APL1.1/TP13/mort-vivant.rep @@ -0,0 +1,3 @@ +En fonction du temps auquel vous exécutez le programme, le programme va afficher la valeur de x ou de y, dans le deux cas, la valeur affichée est stockée soit dans x soit dans y et non pas dans p !! + +p contient seulement *l'adresse* de x ou y et la dernière instruction *pointe* vers cette addresse et donc affiche sa valeur. \ No newline at end of file