TP13 Adresses

This commit is contained in:
Ewen HORVILLE 2021-10-12 14:13:07 +02:00
parent e1ae3a855f
commit dd6a1b1bbb
6 changed files with 61 additions and 0 deletions

1
APL1.1/TP13/alphabet.rep Normal file

@ -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...

@ -0,0 +1,22 @@
#include<stdio.h>
#include<stdlib.h>
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;
}

12
APL1.1/TP13/conversions.c Normal file

@ -0,0 +1,12 @@
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
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;
}

@ -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.

21
APL1.1/TP13/etapes.c Normal file

@ -0,0 +1,21 @@
#include<stdio.h>
#include<stdlib.h>
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;
}

@ -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.