Looking up some tutorials online I noticed two different MPI_SEND uses:
The first says the start of the buffer is
MPI_Send(&a, 500, MPI_INT, 1, 0, MPI_COMM_WORLD);
MPI_Send(b, 500, MPI_INT, 0, 0, MPI_COMM_WORLD);
&a is the address of
a, that is the 500st element of the array a. So it is a pointer.
b can be either an array (e.g.
int b) in which case, without index, it is converted to the pointer to the start of the array (i.e.
&b ), or a p real pointer, pointing to the start of some array.
a (without the ampersand) would be the value of the 500st element.