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}