C не позволяет добавлять два указателя. Лучшее объяснение, которое я нашел для этого, не касаясь какого-либо стандарта, это цитата Рубена Ростамяна:
Если мы с тобой живем на одной улице, разница в нашем доме
цифры - это своего рода указатель расстояния между нашими домами.
Теперь, скажи мне, какой смысл в сумме нашего дома?
цифры?
Так что вся операция не имеет никакого смысла. Это довольно логично, не правда ли? Вы можете сделать это, однако:
NewAddress = (char *)(0x12 + 0x34);