1#include <stdio.h>
2#include <stdlib.h>
3
4typedef enum {
5 STATUS_IDLE,
6 STATUS_RUNNING,
7 STATUS_STOPPED
8} Status;
9
10typedef struct {
11 int x;
12 int y;
13} Point;
14
15typedef struct {
16 Point top_left;
17 Point bottom_right;
18} Rectangle;
19
20typedef struct {
21 int q;
22 int w;
23} Bar;
24
25int add_numbers(int a, int b) {
26 int result = a + b;
27 return result;
28}
29
30int fibonacci(int n) {
31 if (n <= 1) return n;
32 return fibonacci(n - 1) + fibonacci(n - 2);
33}
34
35void print_rectangle(Rectangle rect) {
36 printf("> Rect: (%d, %d) to (%d, %d)\n",
37 rect.top_left.x, rect.top_left.y,
38 rect.bottom_right.x, rect.bottom_right.y);
39}
40
41int main(int argc, char **argv) {
42 const char *myenv = getenv("MYENV");
43
44 char *args[3];
45 for (int i = 0; i < argc; i++) {
46 args[i] = argv[i];
47 }
48
49 int a = 100;
50 int b = 123;
51 int c = add_numbers(a, b);
52
53 Bar bar = { .q = 565, .w = 949 };
54 Status status = STATUS_RUNNING;
55
56 Rectangle rect = {
57 .top_left = { .x = 10, .y = 20 },
58 .bottom_right = { .x = 50, .y = 80 }
59 };
60
61 printf("> MYENV: %s\n", myenv ? myenv : "NULL");
62 printf("> c: %d (via add_numbers)\n", c);
63 printf("> bar.q: %d\n", bar.q);
64 printf("> status: %d\n", status);
65
66 print_rectangle(rect);
67
68 int fib5 = fibonacci(5);
69 printf("> fib(5): %d\n", fib5);
70
71 int arr[] = {10, 20, 30, 40, 50};
72 int *ptr = arr;
73 for (int i = 0; i < 5; i++) {
74 printf("> arr[%d] = %d (via ptr: %d)\n", i, arr[i], *(ptr + i));
75 }
76
77 for (int i = 0; i < 3; i++) {
78 printf("> loop %d\n", i);
79 }
80
81 return 0;
82}