2016-02-17 1 views
0

В C, почему мы идем на классы хранения? Я слышал, что тип авто совпадает с локальной переменной. в этом случае, почему мы идем для автоматического типа? Есть ли какие-либо специальные, используя автоматический тип вместо локальных переменных, который не упоминается как автоматический. , например,Почему мы собираемся использовать класс хранения с автоматическим типом?

int a=10; 

и

auto int a=10; 

и хранятся в сегменте стека и объем этих переменных находится в пределах function.so какова разница между этими двумя? почему мы идем за auto -типом?

+1

'auto type вместо локальных переменных'..пожалуйста, сначала прочитайте C-книгу. –

+0

'auto' не является типом. –

+0

Тип авто является одним из типов класса хранения. Поэтому я упомянул спецификатор auto-type – Arul

ответ

1

Прежде всего, auto (ключевое слово) является не спецификатором типа, это спецификатор класса хранения. Цитата из стандарта,

Объект имеет продолжительность хранения, определяющую его время жизни. Существует четыре хранилища: длительности: статические, потоковые, автоматические и выделенные.

Процитируем C11, глава §6.2.4, хранение длительности объектов

Объект, идентификатор объявляются без какой-либо связи и без хранения класса спецификатора static имеют автоматический срок хранения , [..]

и относительно связи, (внимания шахта)

Следующие идентификаторы не имеют нет связи: идентификатор объявляется быть ничем иным, чем объекта или функции; идентификатор, объявленный как параметр функции; идентификатор блока для объекта, объявленного без спецификатора класса хранения extern.

Таким образом, локальные переменные, удовлетворяющие вышеуказанным условиям, по умолчанию имеют автоматическую продолжительность хранения. Вам не обязательно явно указать ключевое слово auto.

OTOH, спецификаторы типов определяют тип (данных или переменных). Судя по стандартному определению типа

Смысл значения, сохраненного в объекте или возвращаемого функцией определяется типа выражения, используемого для доступа к нему.

+0

где используется ключевое слово auto? – Arul

+0

@ Аргул, вы имеете в виду _explicitly_? –