1 /*
2 *
arraypointer.c
3 *
4 * Beispiel-Programm Zeiger auf Array (vergleiche arrayvar.c)
5 *
6 * Autor: H.Drachenfels
7 * Erstellt am: 28.7.2017 / 10.11.2017 (C11)
8 */
9
10 #include <stdio.h>
11 #include <stdlib.h> // calloc, malloc, free, ...
12 #include <stddef.h> // NULL, size_t, ...
13
14 int main(void)
15 {
16 const int n = 4;
17 int *a = (int*) calloc((size_t) n, sizeof (int));
18 // oder ohne Initialisierung mit 0: int *a = malloc(n * sizeof (int));
19 if (a == NULL)
20 {
21 printf("Speicherreservierung fehlgeschlagen!\n");
22 return 1;
23 }
24
25 a[0] = 3421;
26 a[1] = 3442;
27 a[2] = 3635;
28 a[3] = 3814;
29
30 //------------------------------------ print array values and addresses
31 printf("&a = %p\n", (void*) &a);
32 printf("a = %p\n", (void*) a);
33
34 for (int i = 0; i < n; ++i)
35 {
36 printf("%d: %p %d\n", i, (void*) &a[i], a[i]);
37 }
38
39 //---------------------------------------------------- print array size
40 printf("sizeof a = %zu\n", sizeof a); /* pointer size */
41 printf("%d * sizeof *a = %zu\n", n, n * sizeof *a);
42
43 free(a);
44 return 0;
45 }
46