commit 59d70fb1be9868f8af658454bc379652686a6951 Author: Thomas lavocat Date: Fri Aug 29 09:13:33 2025 +0200 C snippet for mabe diff --git a/prout.c b/prout.c new file mode 100644 index 0000000..7b1d242 --- /dev/null +++ b/prout.c @@ -0,0 +1,70 @@ +#include +#include + +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); +}