Ссылка - это псевдоним - альтернативное имя для объекта.
Так например можно передавать объект в функцию по ссылке:
void swap(int& i, int& j)
{
int tmp = i;
i = j;
j = tmp;
}
int main()
{
int x, y;
...
swap(x,y);
...
}
Указатель - это переменная представляющая собой адрес в памяти другой переменной .
То есть указатель предоставляет возможность работать с памятью - над ним можно выполнять арифметические операции и таким образом выбирать другие области памяти.