diff --git a/20250325/arrays-and-pointers-06.xcf.gz b/20250325/arrays-and-pointers-06.xcf.gz
index 1760ebb7faff5f86311184eee92963abcf22a637..cd908594db91e3efe94a710f48df8f24df33f32f 100644
Binary files a/20250325/arrays-and-pointers-06.xcf.gz and b/20250325/arrays-and-pointers-06.xcf.gz differ
diff --git a/20250325/arrays-and-pointers-07.c b/20250325/arrays-and-pointers-07.c
new file mode 100644
index 0000000000000000000000000000000000000000..b782932cf69c554609c9fee7333dc04038fa99e0
--- /dev/null
+++ b/20250325/arrays-and-pointers-07.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[] = "Test";
+  char *p = "Test";
+  printf ("%016zx %016zx %016zx %016zx\n", (size_t) &a, (size_t) a, (size_t) &p, (size_t) p);
+  p = a;                // OK: Das Array selbst = Adresse eines Elements
+  printf ("%s\n", p);
+  p = &a;               // Warnung: Adresse des Arrays (falscher Typ, aber dieselbe Adresse)
+  printf ("%s\n", p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-08.c b/20250325/arrays-and-pointers-08.c
new file mode 100644
index 0000000000000000000000000000000000000000..fd6341e099fa519a66474969047ffffe49a228de
--- /dev/null
+++ b/20250325/arrays-and-pointers-08.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char *a[] = { "Dies", "ist", "ein", "Test" };
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", a[i]);
+  char **p = a;
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", p[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-08.png b/20250325/arrays-and-pointers-08.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d23472ddfa5b351d505f0f939135c7b84a2bcdb
Binary files /dev/null and b/20250325/arrays-and-pointers-08.png differ
diff --git a/20250325/arrays-and-pointers-09.c b/20250325/arrays-and-pointers-09.c
new file mode 100644
index 0000000000000000000000000000000000000000..79a11aea6295fe7599901647640f4977b91af8e6
--- /dev/null
+++ b/20250325/arrays-and-pointers-09.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char *a[] = { "Dies", "ist", "ein", "Test" };
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", a[i]);
+  for (char **p = a; p < a + 4; p++)
+    printf ("%s\n", *p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-10.c b/20250325/arrays-and-pointers-10.c
new file mode 100644
index 0000000000000000000000000000000000000000..6e47dd62f7d2cd7fe6468b7593aa6e02ab928118
--- /dev/null
+++ b/20250325/arrays-and-pointers-10.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", a[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-10.png b/20250325/arrays-and-pointers-10.png
new file mode 100644
index 0000000000000000000000000000000000000000..8151769462d38a8034e79a58dabe657b0b0f3ad3
Binary files /dev/null and b/20250325/arrays-and-pointers-10.png differ
diff --git a/20250325/arrays-and-pointers-11.c b/20250325/arrays-and-pointers-11.c
new file mode 100644
index 0000000000000000000000000000000000000000..4eae96b54fa380888d5f33141d399ba7ac7eb8f7
--- /dev/null
+++ b/20250325/arrays-and-pointers-11.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  char **p = a;
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", p[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-12.c b/20250325/arrays-and-pointers-12.c
new file mode 100644
index 0000000000000000000000000000000000000000..225ec92f4eb63faaf7610a2428522f9eec293812
--- /dev/null
+++ b/20250325/arrays-and-pointers-12.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  char *p = a;
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", p[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-13.c b/20250325/arrays-and-pointers-13.c
new file mode 100644
index 0000000000000000000000000000000000000000..a22d4aac33bee9e837c2c0aeafc53e297f487884
--- /dev/null
+++ b/20250325/arrays-and-pointers-13.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  char *p = a;
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", &p[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-14.c b/20250325/arrays-and-pointers-14.c
new file mode 100644
index 0000000000000000000000000000000000000000..212508cb3a67f96cd3315b95598bfb422196c7e1
--- /dev/null
+++ b/20250325/arrays-and-pointers-14.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  char *p = a;
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", &p[5 * i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-15.c b/20250325/arrays-and-pointers-15.c
new file mode 100644
index 0000000000000000000000000000000000000000..23db967927b2175c37096523a854a79980ff6185
--- /dev/null
+++ b/20250325/arrays-and-pointers-15.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  for (char *p = a; p < a + 20; p += 5)
+    printf ("%s\n", p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-16.c b/20250325/arrays-and-pointers-16.c
new file mode 100644
index 0000000000000000000000000000000000000000..b06bb2155e2646b76f0333a528ca34eaaf1a6470
--- /dev/null
+++ b/20250325/arrays-and-pointers-16.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  for (char *p = a; p < a + 4; p += 5)
+    printf ("%s\n", p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-17.c b/20250325/arrays-and-pointers-17.c
new file mode 100644
index 0000000000000000000000000000000000000000..7182af45cc97e4095fb49366655dcb35e3f50ab4
--- /dev/null
+++ b/20250325/arrays-and-pointers-17.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+int main (void)
+{
+  char a[][5] = { "Dies", "ist", "ein", "Test" };
+  for (char *p = (char *) a; p < (char *) a + 20; p += 5)
+    printf ("%s\n", p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-18.c b/20250325/arrays-and-pointers-18.c
new file mode 100644
index 0000000000000000000000000000000000000000..993619fd21a50bc6aa47155dae0019a11c0f0be4
--- /dev/null
+++ b/20250325/arrays-and-pointers-18.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 a[] = { "Dies", "ist", "ein", "Test" };
+  for (string5 *p = a; p < a + 4; p++)
+    printf ("%s\n", p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-19.c b/20250325/arrays-and-pointers-19.c
new file mode 100644
index 0000000000000000000000000000000000000000..e4c8438ab6ceded22f37562280a331f33f572f6f
--- /dev/null
+++ b/20250325/arrays-and-pointers-19.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 a[] = { "Dies", "ist", "ein", "Test" };
+  for (string5 *p = a; p < a + 4; p++)
+    printf ("%s\n", &p[0]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-20.c b/20250325/arrays-and-pointers-20.c
new file mode 100644
index 0000000000000000000000000000000000000000..bdca566e1db911f43f2455525337f360139ad2a0
--- /dev/null
+++ b/20250325/arrays-and-pointers-20.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 a[] = { "Dies", "ist", "ein", "Test" };
+  for (string5 *p = a; p < a + 4; p++)
+    printf ("%s\n", &(p[0]));
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-21.c b/20250325/arrays-and-pointers-21.c
new file mode 100644
index 0000000000000000000000000000000000000000..ac953cb1b9f3f6baf9d617299df05a84f46bce34
--- /dev/null
+++ b/20250325/arrays-and-pointers-21.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 a[] = { "Dies", "ist", "ein", "Test" };
+  for (string5 *p = a; p < a + 4; p++)
+    printf ("%s\n", &p[0][0]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-22.c b/20250325/arrays-and-pointers-22.c
new file mode 100644
index 0000000000000000000000000000000000000000..d0247f96992e6947442bbdfca7c64b4925447e49
--- /dev/null
+++ b/20250325/arrays-and-pointers-22.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 a[] = { "Dies", "ist", "ein", "Test" };
+  for (string5 *p = a; p < a + 4; p++)
+    printf ("%s\n", &**p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-23.c b/20250325/arrays-and-pointers-23.c
new file mode 100644
index 0000000000000000000000000000000000000000..5c9ef452b42b06f1eafd5928dc55f0841d4c0f02
--- /dev/null
+++ b/20250325/arrays-and-pointers-23.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 a[] = { "Dies", "ist", "ein", "Test" };
+  for (string5 *p = a; p < a + 4; p++)
+    printf ("%s\n", *p);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-24.c b/20250325/arrays-and-pointers-24.c
new file mode 100644
index 0000000000000000000000000000000000000000..29f0c8ced7258994f0a2681052e4b7f8b51a0b14
--- /dev/null
+++ b/20250325/arrays-and-pointers-24.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 *p = { "Dies", "ist", "ein", "Test" };
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", p[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-24.txt b/20250325/arrays-and-pointers-24.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d6bcad5db5991e66a7e43f33d0869f408b60ecda
--- /dev/null
+++ b/20250325/arrays-and-pointers-24.txt
@@ -0,0 +1,41 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string5[5];
+  string5 *p = { "Dies", "ist", "ein", "Test" };
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", p[i]);
+  return 0;
+}
+cassini/home/peter/bo/2025ss/ad/20250325> gcc -Wall -O3 arrays-and-pointers-24.c
+arrays-and-pointers-24.c: In function ‘main’:
+arrays-and-pointers-24.c:6:18: warning: initialization of ‘char (*)[5]’ from incompatible pointer type ‘char *’ [-Wincompatible-pointer-types]
+    6 |   string5 *p = { "Dies", "ist", "ein", "Test" };
+      |                  ^~~~~~
+arrays-and-pointers-24.c:6:18: note: (near initialization for ‘p’)
+arrays-and-pointers-24.c:6:26: warning: excess elements in scalar initializer
+    6 |   string5 *p = { "Dies", "ist", "ein", "Test" };
+      |                          ^~~~~
+arrays-and-pointers-24.c:6:26: note: (near initialization for ‘p’)
+arrays-and-pointers-24.c:6:33: warning: excess elements in scalar initializer
+    6 |   string5 *p = { "Dies", "ist", "ein", "Test" };
+      |                                 ^~~~~
+arrays-and-pointers-24.c:6:33: note: (near initialization for ‘p’)
+arrays-and-pointers-24.c:6:40: warning: excess elements in scalar initializer
+    6 |   string5 *p = { "Dies", "ist", "ein", "Test" };
+      |                                        ^~~~~~
+arrays-and-pointers-24.c:6:40: note: (near initialization for ‘p’)
+arrays-and-pointers-24.c:8:22: warning: array subscript 10 is outside array bounds of ‘char[5]’ [-Warray-bounds]
+    8 |     printf ("%s\n", p[i]);
+      |                      ^
+arrays-and-pointers-24.c:8:22: warning: array subscript 15 is outside array bounds of ‘char[5]’ [-Warray-bounds]
+arrays-and-pointers-24.c:8:22: warning: offset ‘5’ outside bounds of constant string [-Warray-bounds]
+arrays-and-pointers-24.c:8:22: warning: offset ‘10’ outside bounds of constant string [-Warray-bounds]
+arrays-and-pointers-24.c:8:22: warning: offset ‘15’ outside bounds of constant string [-Warray-bounds]
+cassini/home/peter/bo/2025ss/ad/20250325> ./a.out
+Dies
+
+;(
+
+cassini/home/peter/bo/2025ss/ad/20250325>
diff --git a/20250325/arrays-and-pointers-25.c b/20250325/arrays-and-pointers-25.c
new file mode 100644
index 0000000000000000000000000000000000000000..f0a4b2c05cbcd9c9b428046b212d850f3e0ca73d
--- /dev/null
+++ b/20250325/arrays-and-pointers-25.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  typedef char string8[8];
+  string8 *p = { "Dies", "ist", "ein", "Test" };
+  for (int i = 0; i < 4; i++)
+    printf ("%s\n", p[i]);
+  return 0;
+}
diff --git a/20250325/arrays-and-pointers-25.s b/20250325/arrays-and-pointers-25.s
new file mode 100644
index 0000000000000000000000000000000000000000..99de75a0a35bb679359c1ca9bb800b92444f8e82
--- /dev/null
+++ b/20250325/arrays-and-pointers-25.s
@@ -0,0 +1,31 @@
+	.file	"arrays-and-pointers-25.c"
+	.text
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Dies"
+	.section	.text.startup,"ax",@progbits
+	.p2align 4
+	.globl	main
+	.type	main, @function
+main:
+.LFB11:
+	.cfi_startproc
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 16
+	leaq	.LC0(%rip), %rdi
+	call	puts@PLT
+	leaq	8+.LC0(%rip), %rdi
+	call	puts@PLT
+	leaq	16+.LC0(%rip), %rdi
+	call	puts@PLT
+	leaq	24+.LC0(%rip), %rdi
+	call	puts@PLT
+	xorl	%eax, %eax
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE11:
+	.size	main, .-main
+	.ident	"GCC: (Debian 12.2.0-14) 12.2.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20250325/arrays-and-pointers.ChangeLog b/20250325/arrays-and-pointers.ChangeLog
new file mode 100644
index 0000000000000000000000000000000000000000..7c1e99a7565b7cc08d08adf3107da0f3b542cb4e
--- /dev/null
+++ b/20250325/arrays-and-pointers.ChangeLog
@@ -0,0 +1,15 @@
+Version 1:
+
+  Neues Programm: Array von Strings ausgeben
+
+Version 2:
+
+  Nicht mehr Strings ausgeben, sondern die Adressen.
+
+Version 3:
+
+  Adressen nicht mit %d ausgeben, sondern mit %z
+
+[14:33:29] (Kanal) kriexinger:
+https://semver.org/lang/de/ Diese Art Versionierung ist ganz gut, finde ich.
+Wenn man es manuell machen wil....