Я написал простую программу на С ++, как написано ниже:разница между PTR и & PTR
void main()
{
int *ptr;
ptr=new int;
*ptr=10;
cout<<ptr<<endl;
cout<<&ptr<<endl;
cout<<*ptr<<endl;
}
В чем разница между первыми двумя утверждениями. Оба дают адрес. Так как новый оператор резервирует память в куче, то оператор дает адрес динамически зарезервированной памяти в куче, ptr
или &ptr
. Теперь, если мы делаем:
delete ptr;
Это освободит память динамически зарезервирован в куче раньше, но &ptr
все еще указывает на эту ячейку памяти. Зачем ??
Я смотрел на эту ссылку для справки: https://users.cs.jmu.edu/bernstdh/web/common/lectures/slides_cpp_dynamic-memory.php
'main()' должен всегда 'return'' int' в [tag: C++]! – Johnsyweb
@Johnsyweb Вы помещаете обратные ссылки вокруг, чтобы указать, что это код, но в этом случае ваше утверждение неверно. Он должен возвращать 'int', но ему не требуется инструкция' return'. – hvd
Я думал, что стандарт не требует возврата, но многие компиляторы сука, если у вас есть функция, возвращающая тип, который на самом деле не возвращает. Думаю, я согласен с тем, что нужно требовать возврат типа int. void - неприемлемая странность, которая должна быть вычеркнута. – RichardPlunkett