When I create an array and a pointer to that array, why cant I print out the numbers by writing *p[3] instead of just p[3]. When I am doing it with normal numbers like the variable b in the example, I can only access the pointers value by typing the * operator before e (i.e *e). And why isn't it int *p = &array instead of int *p = array?
#include <iostream>
int main(){
int array[5] = {3, 3, 4, 6, 7};
int *p = array;
std::cout << p << "\n" << p[3];
int b = 5;
int *e = &b;
std::cout << "\n" << e << " " << *e;
}