At present, Webassembly only supports a handful of parameter types, namely fixed sized integers and floating point numbers. This means that I can only define and export functions from my C/Rust modules that accept and return numeric values.
I've detailed how to share strings to / from JS / wasm in this answer, which has details on some of the above.
Note that pointers in WebAssembly aren't really a thing. C++ simply maps them to the Memory, which starts at 0. So when you index the ArrayBuffer you just need the pointer from C++, no extra mapping required.