0
Why This Program Give Error?
#include <stdio.h> #include <stdlib.h> #include<string.h> int main() { int arr[]={1,2,3,4,5,6,7,8,9,10}; int *ptr = &arr; for(int i=0;i<10;i++) { printf("%d\n",*arr); arr++; } return 0; }
5 Answers
+ 2
arr is an array, you can't increase it by one
+ 2
And what you are trying with the pointer doesn't work.
What do you want to do? Assign the array elements to pointer?
https://www.tutorialspoint.com/cplusplus/cpp_array_of_pointers.htm
+ 1
arr does not store an address,
it is the address!!!
Doing arr++ is like doing 8++ or printf++:
It doesn't make sense!
ptr does indeed store an address, but it should be ptr = arr;
The type of &arr is not
int* (pointer to int)
but
int (*) [10] (pointer to array of 10 int).
You found one of the few cases where arrays have this behaviour
0
arr is pointing first element of array.
means arr is pointer then why we dont increment.
whereas when we increament pointer type variable then it not rise error.
both arr and pointer variable store address of first element of array
0
arr is the array, not an element of the array.
You are trying to assign an array to an integer pointer.
Which output do you expect?
Did you look at the example that I linked?