You can change the value of a pointer by adding or subtracting an integer, i.e.
Code:
int i = 42;
std::cout << "&i = " << &i << std::endl;
std::cout << "(&i) + 1 = " << (&i) + 1 << std::endl;
Adding "+1" to a pointer moves that pointer by (size of the type) bytes, i.e. by one byte if it's a char pointer, by 4 bytes if it's an int pointer, by 8 bytes if it's a pointer to a struct containing two integers and so on.
Doing that is called pointer arithmetic and you can't to that with Java:
Code:
// C++
Obj *obj = new Obj();
obj + 1; // valid expression, points to sizeof(Obj) bytes after obj
// Java
Object obj = new Object();
obj + 1; // compiler error