Если я объявляю следующие переменные:Принимая адрес указателя
int array[10] = { 34, 43,12, 67, 34, 43,26, 98, 423,1 };
int * p = array;
Затем этот цикл:
for (int i = 0; i < 10; i++)
{
std::cout << &*p++ << " ";
}
дает мне другой вывод (другой набор адресов), к этому коду :
for (int i = 0; i < 10; i++)
{
std::cout << p++ << " ";
}
Почему? Разве они не семантически эквивалентны?
EDIT:
Ну, мои извинения всем, кто ответил на этот один, я не исходный код, это был тест, который я сделал у себя дома, и получается, что я удалил этот код из моего проект. (моя широкополосная связь еще не подключена, поэтому я подождал, пока я не приступим к работе, чтобы опубликовать это). В любом случае - я уверен, что забыл инициализировать p
. Но вопрос «разве они не семантически эквивалентны?» был дан ответ. Благодарю.
Я думаю, что это связано с приоритетом операторов. Что произойдет, если вы добавите скобки? –
Опубликуйте также результат и точный код. Я думаю, вам нужно будет повторно инициализировать 'p' в качестве плаката. – dirkgently
@ dirkgently - его возможно - мой оригинальный код находится у вас дома. о нет, я мог бы разместить здесь вопрос о даффе. uh - ой. – BeeBand