From bf6752edd6a7e75673a979a2240ff5eb136a13c1 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Mon, 19 Sep 2011 23:05:31 -0400 Subject: [PATCH] using separate funcs for each way of looping/printing --- ex15.c | 46 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/ex15.c b/ex15.c index d3f8626..52eea30 100644 --- a/ex15.c +++ b/ex15.c @@ -1,15 +1,7 @@ #include -int main(int argc, char *argv[]) +void print_with_array_indexing(int count, char *names[], int ages[]) { - // create two arrays we care about - int ages[] = {23, 43, 12, 89, 2}; - char *names[] = { - "Alan", "Frank", - "Mary", "John", "Lisa" - }; - // safely get the size of ages - int count = sizeof(ages) / sizeof(int); int i = 0; // first way using indexing @@ -19,7 +11,11 @@ int main(int argc, char *argv[]) } printf("---\n"); +} +void print_with_pointer_arithmetic(int count, char *names[], int ages[]) +{ + int i; // setup the pointers to the start of the arrays int *cur_age = ages; char **cur_name = names; @@ -31,7 +27,13 @@ int main(int argc, char *argv[]) } printf("---\n"); +} +void print_with_pointers_as_arrays(int count, char *names[], int ages[]) +{ + int i; + int *cur_age = ages; + char **cur_name = names; // third way, pointers are just arrays for(i = 0; i < count; i++) { printf("%s is %d years old again.\n", @@ -40,6 +42,13 @@ int main(int argc, char *argv[]) printf("---\n"); +} + +void print_in_stupidly_complex_way(int count, char *names[], int ages[]) +{ + int *cur_age = ages; + char **cur_name = names; + // fourth way with pointers in a stupid complex way for(cur_name = names, cur_age = ages; (cur_age - ages) < count; @@ -50,7 +59,26 @@ int main(int argc, char *argv[]) } printf("---\n"); +} + + +int main(int argc, char *argv[]) +{ + // create two arrays we care about + int ages[] = {23, 43, 12, 89, 2}; + char *names[] = { + "Alan", "Frank", + "Mary", "John", "Lisa" + }; + // safely get the size of ages + int count = sizeof(ages) / sizeof(int); + + print_with_array_indexing(count, names, ages); + print_with_pointer_arithmetic(count, names, ages); + print_with_pointers_as_arrays(count, names, ages); + print_in_stupidly_complex_way(count, names, ages); + int i; char **arg = argv; for(i = 0; i < argc; i++) { printf("argument %d is '%s' (address = %p)\n", i, *arg, arg);