Regarding prime sieve

I was writing the program to find prime nos. by using sieve of Eratosthenes but my program is not working properly and also I have not understood one thing .

we arent using &p becuse p isnt any integer its an array.
arrays and pointers are not the same thing. An array is a sequence of one or more elements of a given type, while a pointer points to a memory location (which may be the first element of an array). Because of this, the address of an array is the same as the address of the first element.

here p decays into a pointer to the first element and that address is what is passed(thats exactly what we needed in the function call).
your code is correct just make the p in function long long int too
void prime_sieve(long long int *p){

here https://ide.codingblocks.com/s/469288