Disadvantages of Array of Pointers
The array of pointers also has its fair share of disadvantages and should be used when the advantages outweigh the disadvantages. Some of the disadvantages of the array of pointers are:
- Higher Memory Consumption: An array of pointers requires more memory as compared to plain arrays because of the additional space required to store pointers.
- Complexity: An array of pointers might be complex to use as compared to a simple array.
- Prone to Bugs: As we use pointers, all the bugs associated with pointers come with it so we need to handle them carefully.
Related Article: Pointer to an Array | Array Pointer
Array of Pointers in C
In C, a pointer array is a homogeneous collection of indexed pointer variables that are references to a memory location. It is generally used in C Programming when we want to point at multiple memory locations of a similar data type in our C program. We can access the data by dereferencing the pointer pointing to it.
Syntax:
pointer_type *array_name [array_size];
Here,
- pointer_type: Type of data the pointer is pointing to.
- array_name: Name of the array of pointers.
- array_size: Size of the array of pointers.
Note: It is important to keep in mind the operator precedence and associativity in the array of pointers declarations of different type as a single change will mean the whole different thing. For example, enclosing *array_name in the parenthesis will mean that array_name is a pointer to an array.
Example:
C
// C program to demonstrate the use of array of pointers #include <stdio.h> int main() { // declaring some temp variables int var1 = 10; int var2 = 20; int var3 = 30; // array of pointers to integers int * ptr_arr[3] = { &var1, &var2, &var3 }; // traversing using loop for ( int i = 0; i < 3; i++) { printf ( "Value of var%d: %d\tAddress: %p\n" , i + 1, *ptr_arr[i], ptr_arr[i]); } return 0; } |
Value of var1: 10 Address: 0x7fff1ac82484 Value of var2: 20 Address: 0x7fff1ac82488 Value of var3: 30 Address: 0x7fff1ac8248c
Explanation:
As shown in the above example, each element of the array is a pointer pointing to an integer. We can access the value of these integers by first selecting the array element and then dereferencing it to get the value.