You should be able to do pointer arithmetic as usual on half pointers. I’m not sure I understand the question fully. You are missing semicolons and it’s not sensible to attempt to assign a const variable in C++ after its point of definition. However, for example, this should give expected behavior, similar to the expected behavior if you replaced every instance of __half with float:
__half *C = (__half *)malloc(64);
const __half *B = C;
int jb=16;
const __half *Blast = B + jb;
// Blast now points to the element at index 16 of B (or C)