summaryrefslogtreecommitdiff
path: root/C/Pointers/multi_indirection.c
blob: 92b677cc32a6840f63bcd3296b087dee08f95766 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>

char *words[3];

int main(void)
{
	char *pc;
	char **ppc;
	int i;
	char *foo, *bar;

	printf("multiple indirection example\n");

	words[0] = "zero";
	foo = "FOO";
	words[1] = "one";
	bar = "BAR";
	words[2] = "two";

	for (int i = 0; i < 3; i++)
		printf("%s\n", words[i]);

	printf("Print each char in each string...\n");

	ppc = words;

	printf("Addr of array head %p\n", words);
	for (i = 0; i < 3; i ++) {
		ppc = words + i;
		pc = *ppc;

		printf("array %d -> loc %p -> deref: %p\n", i, &words[i], *ppc);
		while (*pc != 0) {
			printf("addr: %p - content: %c \n", pc, *pc);
			pc += 1;
		}

		printf("\n");
	}

	return 0;
}