Pointer is a variable which stores the address of other variable.
Consider the following statement −
int qty = 179;
Declaring a pointer
The syntax for declaring a pointer is as follows −
int *p;
Here, ‘p’ is a pointer variable which holds the address of other variable.
Initialization of a pointer
Address operator (&) is used to initialize a pointer variable.
For example,
int qty = 175; int *p; p= &qty;
Array of Pointers
It is collection of addresses (or) collection of pointers.
Declaration
Following is the declaration for array of pointers −
datatype *pointername [size];
For example,
int *p[5];
It represents an array of pointers that can hold five integer element addresses.
Initialization
‘&’ is used for initialization
For example,
int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i;
Accessing
Indirection operator (*) is used for accessing.
For example,
for (i=0, i<3; i++) printf ("%d", *p[i]);
Program
Following is the C program to calculate the sum of the array elements by using pointers −
//sum of array elements using pointers #include <stdio.h> #include <malloc.h> void main(){ int i, n, sum = 0; int *ptr; printf("Enter size of array : \n"); scanf("%d", &n); ptr = (int *) malloc(n * sizeof(int)); printf("Enter elements in the List \n"); for (i = 0; i < n; i++){ scanf("%d", ptr + i); } //calculate sum of elements for (i = 0; i < n; i++){ sum = sum + *(ptr + i); } printf("Sum of all elements in an array is = %d\n", sum); return 0; }
Output
When the above program is executed, it produces the following result −
Enter size of array: 5 Enter elements in the List 12 13 14 15 16 Sum of all elements in an array is = 70