int main(){
char* str="Hello";
// str: 0x4006db, *str++: l, str: 0x4006db, *str++: e, str: 0x4006db, *str++: H
printf("str: %p, *str++: %c, str: %p, *str++: %c, str: %p, *str++: %c\n", str, *str++, str, *str++, str, *str++);
}
Я надеюсь, что это не еще один глупый вопрос:Ценность полукокса PTR не изменяется после приращения ++
Почему значение указателя ул не изменилась после того, как я увеличивается его
*str++
?Если значение
str
указателя не изменилось, каждый раз, когда я делаю*str++
я должен дать такое же значение, а не,l
e
H
.Почему появляется сообщение
l
, а неH
?
Btw, я также посмотрел на стоимость &str
, это то же самое до и после того, как я сделал *str++
.
Любая помощь будет очень признательна. Благодаря
У вас есть неопределенное поведение. –
В 'str ++' ++ является POST-приращением. Таким образом, он передает '* str' в printf и только затем увеличивает 'str' (теперь он укажет на следующий символ). И параметры оцениваются справа налево. –
«Надеюсь, это не другой глупый вопрос» - ну, к сожалению ... –