TP13 Adresses

This commit is contained in:
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
View 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...

View File

@ -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
View 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;
}

View File

@ -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
View 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;
}

View File

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