"чтобы результат отличался - не встречал" - а что ещё надо??? А раскладывать внутри при оптимизации по-другому он ИМЕЕТ ПОЛНОЕ ПРАВО, лишь бы не отличался результат.
А теперь давай обработаем от 5-го до 10-го элемента в строках с 3-ей по 8-ю. Твой хак через приведение двумерного массива к одномерному в пролёте, а arr[i][j] часто неэффективно.
А указатель внутри цикла - так а смысл его для *этого* варианта объявлять снаружи? Временная вспомогательная переменная - должна быть объявлена там, где нужна.
Это если
extern int arr[size_y][size_x]; int *p = arr[start_y]; for( i = start_y ; i <= end_y; ++i) { for( j = start_x; j <= end_x; ++j) p[j] += 20; p += size_x; }то тогда да, лучше объявить снаружи