>>668
こんな感じ。
#include "stdafx.h"
#include<windows.h>
//---------------------------
void f(char*& p)
{
  p = new char[256]; // <--- この p は、main の pm を参照してる(同じ)
  lstrcpy(p, "abc\n");
}
//---------------------------
void f2(char* p)
{
  p = new char[256]; // <--- この p は、main の pm と別物(f2の中だけで有効)
  lstrcpy(p, "abc\n");
}
//---------------------------
int main(int argc, char* argv[])
{
  char* pm = NULL;
  f(pm); // 参照タイプ
  printf(pm); // <--- pmのなかに、f のなかで確保したメモリのアドレスが入ってる。
  delete pm;

  pm = NULL;
  f2(pm);
  printf(pm); // <--- pmのなかには、NULLがはいってるからエラー。
  delete pm;
  return 0;
}
void f(char*& p) の場合は、pm自体のアドレスが渡されて、
void f(char* p) の場合は、pmの中身が渡される。