Разница в двух словах:
StructA a
объявляет переменную, которая является StructA.
StructA* a
объявляет указатель, указывающий на StructA.
Последствия:
Переменная StructA
будет сразу можно использовать для хранения данных.
Указатель StructA*
должен быть установлен так, чтобы указывать на фактическую структуру, прежде чем он сможет использоваться для хранения данных.
Переменная StructA
будет автоматически освобождена при выходе текущего блока.
Пока указатель StructA*
будет освобожден, когда текущий блок выйдет, данные, на которые он указывает (созданный с помощью new
), не исчезнут, пока не вызывается delete
. Если delete
никогда не вызывается, ваша программа будет иметь утечку памяти.
Второй - указатель на структуру; первая - это объявление прямой переменной. –
Как вы думаете, какая разница? Я прошу понять, как/на что ответить, поскольку ваш ответ даст мне «уровень». –
Второй требует от вас теперь управлять тем, что вы только что выделили. – chris