OpenGL - Bind Buffer Arrays question

So this is probably a simple question:

But how come sometimes I see it like this:

GLuint vbuffer;
glGenBuffers(1, &vbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vbuffer);


but when done in multiples:

GLuint VBOs[2]
glGenBuffers(2, VBOs);
glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]);


Im curious why glGenBuffers has a & in the first one, and not in the second case. Is it because arrays are always passed by reference? and is vbuffer a POINTER to something or just a simple data structure (GLint in this case).

• In C or C++, in this context, VBOs is short for &VBOs[0]. You could write &VBOs[0] if it confuses you. – user253751 Nov 5 '15 at 23:10