** I would like to copy the pointer array to a new pointer so the original array won't change**
/* The main contains a pointer (p) to an array */
int main()
{
...
...
...
p = (int*)malloc(length*sizeof(int));
z = (int*)copyArray(p, length);
    
    printArray(z, length);
    
    return 0;
} 
/* end of main */
CopyArray func /* copy the array, return a new pointer to a new array with same size and values */
 int copyArray(int *p, int length)
    {
            int *z = (int*)malloc(length*sizeof(int));
            
            for(length--; length>=0; length--)
            {
                z[length] = p[length];
                
            }
            
            return *z;
    }
printArray func /* The function receives a pointer to an array and it's length. it will print the values that the array contains by the order */
void printArray(int *p, int length)
    {
        int i = 0;
        for(; i<length; i++)
        {
            printf("\n %d \n", p[i]);
                
        }
    }
 
    