>>200-201
こういうときは C++ の参照がいいなっって思います. http://codepad.org/zX53XG8v

>>201
× if ((*b = (int **)malloc(sizeof(int **) * n)) == NULL)
○ if ((*b = (int **)malloc(sizeof(int *) * n)) == NULL)

× for (i = 0; i < N; i++) (*b)[i] = &a[i];
○ for (i = 0; i < n; i++) (*b)[i] = &a[i];

あと free()‥‥.