Я из школы, которая считает, что лучше ограничить область имен переменных настолько, насколько это возможно; если ptr
не предназначен для ссылки вне цикла, то он не должен быть объявлен вне цикла.
Однако, если something
оказывается дорогостоящей операцией И , она инвариантна (т. Е. Не зависит от i
) И предотвращает код удовлетворяя жестким требованиям к производительности, тогда да, вы должны переместить объявление за пределы цикла.
Это невероятно уродливо, но вы можете сделать что-то вроде этого:
do
{
char *ptr = something;
for (int i = 0; i < 1000; i++)
{
/* use ptr here */
}
} while (0);
Вы по-прежнему ограничиваете область действия ptr
, но больше не назначаете ее на каждой итерации цикла.