2014-01-09 3 views
0

Привет, У меня есть вопрос о указателях;Указатель ++, неопределенное поведение

char * bf=new char[5]; 

char* p=bf+5; 

p-- Работает? или будет p-- сделать некоторую неопределенную ошибку? Как bf+5 не определено?

Спасибо.

+3

@RaviH: И что это докажет? –

+0

Это докажет, вызывает ли это «некоторая неопределенная ошибка» или нет. Это не хороший способ научиться программированию, не экспериментируя и не пробовать такие простые вещи, прежде чем задавать вопрос о stackoverflow. – RaviH

+6

@RaviH Это возможно для неопределенного поведения и для того, чтобы программа все еще выполнялась без возникновения ошибки. Большинство пользователей подчеркивают тот факт, что UB может заставить вас выпасть из неба или открыть червоточину на плутоне, но также разрешено просто продолжать спокойно, казалось бы, преуспев, пока вы не попытаетесь запустить его в другом контексте. – ApproachingDarknessFish

ответ

3

Там нет ничего не определено о

char* bf=new char[5]; 
char* p=bf+5; 

Но р будет указывать от конца массива. Пока массив не будет уничтожен, p-- вернет вас к последнему элементу массива.

1

p-- в этом случае гарантированно укажет на последний элемент массива, без UB.

Смежные вопросы