Вы можете перераспределить только массив, который был выделен динамически. Если он был распределен статически, его нельзя перераспределить [безопасно]. *
Указатели содержат адреса данных в памяти. Они могут быть выделены, освобождены и перераспределены динамически, используя операторы new / delete в C ++ и malloc / free в C.
Я настоятельно рекомендую вам прочитать Язык программирования C Кернигана и Ричи, а также твердый текст C ++, например C ++ с нуля Гербертом Шильдтом.
Использование динамической памяти, указателей, смещений и т. Д. Являются основополагающими для использования этих двух языков. Незнание того, как они работают и почему они существуют, может стать причиной того, что потенциальные работодатели откажут вам в этом.
* компилятор не должен позволять вам перераспределять все, что было выделено статически, но если это произойдет, поведение не определено