Автоматическая переменнаяпеременная, которая объявляется внутри блока.
Областью действия автоматической переменной является блок, в котором она объявлена. Автоматическая переменная создается динамически (автоматически) при входе в блок и прекращает существование при выходе из него.
Область действия и время жизни параметра функции такие же, как и у автоматической переменной.
В программе может быть несколько совпадающих идентификаторов. Тем не менее, две переменные, объявленные в одном и том же блоке, не могут иметь одинаковых имен. Если переменная во внутреннем блоке имеет то же имя, что и объявленная во внешнем блоке переменная, операторы внутри блока ссылаются на переменную, объявленную во внутреннем блоке.
Пример 1
int main()
{
void print_cube(int);
int x;                         /* известно только в main() */

x = getchar();
if ( x == 'c')
   {
    float x;                   /* известно в этом блоке */
    x = .75;                   /* ссылается на float x */
   }
print_cube(100);
}
void print_cube(int x)         /* известно только в print_cube()*/
{
    printf ("%d\n", x*x*x);
}
Примечание 1
На практике лучше избегать таких ситуаций, так как они могут быть причиной ошибок.