Question: I saw that an array of pointers can be created using vector, however, I don't want that. Is the example below a way to create a pointer to int array?

```
#include <iostream>
using namespace std;

int main() {
    int* arr[4];
    for (int i=0; i<4; ++i) {
        cout<<endl<<arr[i];
    }
}

```

This makes a pointer to int array and it displays the memory address of each index in the array. Now I have few questions. Is it a proper way to create a pointer to int array without a vector? Also, if I want to initialize a value inside each memory address in the given example, how is it done? And lastly why is `&arr` equal to `arr`?

Answer: 
While `&arr` and just plain `arr` may both give you the same address, they are both very different.

With `&arr` you get a pointer to the array, and the type of it is (in your case) `int* (*)[4]`.

When you use `arr` it decays to a pointer to the first element and the type is (again, in your case) `int**`.

Same address, but different types.

---

As for the array itself, it's defined fine, you have an array of four pointers to `int`. However, you do not initialize the contents of the array, which means that the contents is *indeterminate*, and using those pointers in any way (even just printing them) leads to [*undefined behavior*](https://en.wikipedia.org/wiki/Undefined_behavior).
&arr gives you the address of array which starts with base address ie address of first element.

arr gives the address of first element.

hence u get same result for both