Для автоматических переменных компилятор сам принимает решение, выделить место на стеке или держать в регистрах. Естественно, если от переменной явно берётся адрес, она будет помещена в стек. Думаю, то же относится к массивам, даже маленьким - http://en.wikipedia.org/wiki/Register_(keyword) использование индекса для обращения к элементам массива подразумевает адресную арифметику. Хотя современные оптимизаторы могут демонстрировать чудеса изобретательности. Слово register считается устаревшим, его лучше не использовать.