71 lines
1.4 KiB
C
71 lines
1.4 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
struct structure {
|
|
int a;
|
|
int b;
|
|
};
|
|
|
|
struct structure_mixte {
|
|
char a;
|
|
int b;
|
|
};
|
|
|
|
int main(){
|
|
// simple
|
|
int val = 15;
|
|
int* ad = &val;
|
|
*ad = 16;
|
|
printf("%d\n", val);
|
|
|
|
// structures
|
|
printf("taille : %d\n", sizeof(struct structure));
|
|
struct structure* s = malloc(sizeof(struct structure));
|
|
s->a = 17;
|
|
s->b = 18;
|
|
ad = (int*) s;
|
|
printf(" ad %d\n", *ad);
|
|
ad = ad + 1;
|
|
printf("ad +1 %d\n", *ad);
|
|
|
|
// structures mixtes
|
|
printf("taille : %d\n", sizeof(struct structure_mixte));
|
|
struct structure_mixte* m = malloc(sizeof(struct structure_mixte));
|
|
m->a = 'a';
|
|
m->b = 19;
|
|
ad = (char*) m;
|
|
printf("ad %c\n", *(char*)ad);
|
|
ad = (char*) ad + 1;
|
|
printf("ad +1 %d\n", *ad);
|
|
ad = (char*) ad + 3;
|
|
printf("ad +3 %d\n", *ad);
|
|
ad = (int*) m;
|
|
*ad = 20;
|
|
printf("%d\n", *ad);
|
|
|
|
// Jouer avec les adresses
|
|
int* a = malloc(4);
|
|
*a = 1;
|
|
int* b = &a;
|
|
**( int** ) b = 2;
|
|
printf("%d\n", *a);
|
|
free(( void* ) * ( void** ) b);
|
|
|
|
// comprendre les tableaux
|
|
a = malloc(8);
|
|
*a = 5;
|
|
b = a + 1;
|
|
*b = 6;
|
|
printf("%d\n", *a);
|
|
printf("%d\n", *b);
|
|
|
|
// comprendre le déférencement
|
|
char *c = (char*) a + 1;
|
|
*c = 'a';
|
|
printf("%d\n", *a);
|
|
printf("%c\n", *c);
|
|
*a = 5;
|
|
printf("%d\n", *a);
|
|
free(a);
|
|
}
|