Это на будущее. Char занимает 1 байт, так что адрес увеличится на 1 в шестнадцатеричном представлении, если к char прибавить 1, а если прибавить 1 к int1, как и к uint32_t(они оба занимают по 4 байта), то адрес увеличится на 4(был 0xAAFFAACB, а станет 0xAAFFAACF), тип double занимает 8 байт, то есть если, например, переменная типа double занимала адрес 0x123AB111, то будет занимать 0x123AB119 при увеличении указателя на 1.
"К указателям могут применяться только две арифметические операции: сложение и вычитание. Для понимания арифметических действий с указателями предположим, что p1 - это указатель на целое, содержащий значение 2000, и будем считать, что целые имеют длину 2 байта. После выражения
p1 ++;
содержимое p1 станет 2002, а не 2001! Каждый раз при увеличении p1 указатель будет указывать на следующее целое. Это справедливо и для уменьшения. Например:
р1 --;
приведет к тому, что p1 получит значение 1998, если считать, что раньше было 2000
Естественно, все не ограничивается только уменьшением или увеличением. Можно добавлять или вычитать из указателей целые числа. Выражение
p1 = p1 + 9;
приводит к тому, что указатель p1 указывает на девятый элемент по сравнению с элементом, на который он указывал до присваивания.
Помимо добавления или вычитания указателей и целых чисел, единственную операцию, которую можно выполнять с указателями, - это вычитание одного указателя из другого.
."