c_dsgrid3s returns a pointer to a linear array of data that is the interpolated grid stored in row-major order. That is, if out is declared as

float *out;

and we set:

out = *c_dsgrid3s(n, x, y, z, u, nx, ny, nz,
xo, yo, zo, ier);

then out[nz*ny*i + nz*j + k] is the interpolated function value at coordinate point (xo[i],yo[j],zo[k]) for 0 <= i < nx, 0 <= j < ny, and 0 <= k < nz. The space for out is allocated internal to c_dsgrid3s and is nx*ny*nz floats in size.