Your error has nothing to do with OpenGL. You need to understand how pointers work:


void create_program(GLuint &handle, GLuint *shaders) {
...
for (int i = 0; i < (sizeof(shaders) /...