Цитата mrcnn:
Как изменяется p при присваивании p=t? Допустимо ли оно? »
|
p - это всего лишь переменная хранящая адрес на первый байт блока памяти который Вы выделили оператором new. char - сообщает компилятору, какого типа данные там будут храниться, а так же сообщает сколько памяти нужно выделить (в Вашем случае 1 байт x 5 и 1 x 2, если бы указали тип wchar_t, то было бы 2x5 и 2x2, тоесть памяти под этот тип данных необходимо в 2 раза больше).
Если Вы присвоите p адрес содержащийся в t, то p просто будет указывать на первый байт блока памяти выделенный во второй строке Вашего кода. При этом блок памяти выделенный в первой строке будет утерян и превратиться в мусор.
Компилятор не контролирует сколько памяти было выделено для конкретного объекта (p или t), эта процедура ложиться на плечи самого программиста.