I believe there are just 2 types of arguments
A pointer to an opencl buffer (which can be an OpenGL buffer or a DirectX surface) and local buffers.
Local buffers are space reserved in local memory (might be the wrong term) for the duration of the kernel execution.
you create these by the call
clSetKernelArg(kernel, arg++, localMemBufferSizeInBytes, (void *)NULL);
I assume this is what you mean by a temporary array