Write a C++ program to explain the relationship between pointers and arrays.
Answer:
Step 1
An array is a block of sequential data.
Pointer is an object that stores memory address.
In most contexts, array names decay to pointers.
Example:
#include <stdio.h>
int main() {
int x[4];
int i;
for(i = 0; i < 4; ++i) {
printf("&x[%d] = %p\n", i, &x[i]);
}
printf("Address of array x: %p", x);
return 0;
}
Output:
&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Address of array x: 1450734448
--There is a difference of 4 bytes between two consecutive elements of array x. It is because the size of int is 4 bytes
--Notice that, the address of &x[0] and x is the same. It's because the variable name x points to the first element of the array.
##In simple words, array names are converted to pointers. That's the reason why you can use pointers to access elements of arrays. However, you should remember that pointers and arrays are not the same.
Step 2
Program:
#include <stdio.h>
int main() {
int i, x[6], sum = 0;
printf("Enter 6 numbers: ");
for(i = 0; i < 6; ++i) {
// Equivalent to scanf("%d", &x[i]); scanf("%d", x+i);
// Equivalent to sum =sum+ x[i]
sum += *(x+i);
}
printf("Sum = %d", sum);
return 0;
}
//*(x-i) gives the previous element
Step 3
Output:
Enter 6 numbers: 4 3 10 3 12 4
Sum = 36