In an example for a little game framework (that does work), there are the lines:
ID3D10Device* device;
ID3D10Buffer* pBuffer;
followed by the line
device()->CreateBuffer(&bd, NULL, &pBuffer());
The third argument requires a pointer, so why do you need to put an ampersand before pBuffer? an ampersand gets a memory address right? But pBuffer is already a pointer so what does the ampersand do to it?