From ed5721dcb096300a64d1bece4cb66be0b8771a6b Mon Sep 17 00:00:00 2001 From: tmeissner Date: Wed, 9 Apr 2014 23:59:04 +0200 Subject: [PATCH] more examples up to chapter 'using one-dimensional array of pointers' --- c_pointers/chapter_4.c | 51 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/c_pointers/chapter_4.c b/c_pointers/chapter_4.c index 3b7c714..1dae1af 100644 --- a/c_pointers/chapter_4.c +++ b/c_pointers/chapter_4.c @@ -2,6 +2,28 @@ #include +void displayArray(int arr[], size_t size); +void displayArrayPtr(int *arr, size_t size); + + +void displayArray(int arr[], size_t size) { + for (size_t i = 0; i < size; i++) { + // both variants are possible + printf("%d\n", arr[i]); + //printf("%d\n", *(arr + i)); + } +} + + +void displayArrayPtr(int *arr, size_t size) { + for (size_t i = 0; i < size; i++) { + // both variants are possible + printf("%d\n", *(arr + i)); + //printf("%d\n", arr[i]); + } +} + + int main(void) { int vector[5] = {1,2,3,4,5}; @@ -20,31 +42,48 @@ int main(void) { // pointer notation and arrays int value = 3; - for(size_t index = 0; index < sizeof(vector)/sizeof(int); index++) { + for (size_t index = 0; index < sizeof(vector)/sizeof(int); index++) { // all following operations are equivalent *pv++ *= value; //pv[index] *= value; //*(pv + index) *= value; //vector[index] *= value; } - for(size_t index = 0; index < sizeof(vector)/sizeof(int); index++) { + for (size_t index = 0; index < sizeof(vector)/sizeof(int); index++) { printf("vector[%zu]: %d\n", index, vector[index]); } // using malloc to create a one-dimensional array pv = (int*) malloc(5 * sizeof(int)); - for (size_t i = 0; i < 5; i++) - { + for (size_t i = 0; i < 5; i++) { pv[i] = i + 1; } - for (size_t i = 0; i < 5; ++i) - { + for (size_t i = 0; i < 5; ++i) { *(pv + i) = i + 1; } for(size_t index = 0; index < 5; index++) { printf("pv[%zu]: %d\n", index, pv[index]); } + // passing array to function using array notation + displayArray(vector, sizeof(vector)/sizeof(int)); + + // passing array to function using pointer notation + displayArrayPtr(vector, sizeof(vector)/sizeof(int)); + + + // using one-dimensional array of pointers + { + int *arr[5]; + for (size_t i = 0; i < 5; i++) { + // both variants are equivalent + arr[i] = (int*) malloc(sizeof(int)); + *arr[i] = i; + //*(arr + i) = (int*) malloc(sizeof(int)); + //**(arr + i) = i; + } + } + return 0; } \ No newline at end of file