2015-12-13 6 views
-3

В C (ANSI C) все переменные автоматически по умолчанию, поэтому в чем причина автоматического ключевого слова? Можете ли вы назвать примеры использования ключевого слова auto? (За исключением C++ 14).В чем причина ключевого слова auto в чистом C?

+3

http://stackoverflow.com/questions/2192547/where-is-the-c-auto-keyword-used – Alexguitar

+0

Это возможно [дубликат] (http://stackoverflow.com/questions/4688816/concept -of-auto-keyword-in-c). – Michi

+0

Как вы просите C (btw. Это называется ISO-C или просто C, потому что это должно подразумевать стандартное соответствие), нет необходимости исключать C++. C++ - это двуязычный язык. Или вы также хотите явно исключить Java, Ruby или Cobol? – Olaf

ответ

0

Все переменные - неauto по умолчанию; Например, все, что объявлено в области файлов, составляет static.

Ключевое слово auto - это перерыв с языков BCPL и B, из которых был получен C. В настоящий момент это в значительной степени рудиментарно, но тем не менее это не наносит вреда, поэтому нет причин избавляться от него.

1

В ключевом слове auto ключевое слово auto определяется локальный класс хранения переменных, который имеет локальное или ограниченное время жизни от конца своего объявления до конца его охватывающей области (блока или функции); как только поток программы выходит из этой области, этот экземпляр переменной перестает существовать.

Пример ::

Auto [data_type] [variable_name]; 

Так что это два:

auto int var; 
int var; 

Оба заявления имеет тот же смысл. Поскольку ключевое слово auto - это локальное время жизни по умолчанию для локальных переменных, ключевое слово auto крайне редко используется, оно имеет смысл только для разработчика-компилятора или интерпретатора, делающего запись в таблице символов или в качестве ключевого слова автозапуска. Auto ключевое слово говорит, что это хранилище автоматически выделяется при вводе блока (в отличие от глобального статического распределения или динамического распределения в куче).

+3

Это не утверждения, а декларации. – Olaf

+0

Спасибо, я исправлю это. – Michi

+1

Некоторые программисты предпочитают явно указывать намерения. Ключевое слово auto позволяет использовать это, хотя и мало. В Java, например, член класса области пакета объявляется, когда общедоступные, частные и защищенные ключевые слова отсутствуют в объявлении участника. Мне никогда не нравилось это решение по дизайну, поскольку оно позволяет надзору вызывать непреднамеренный уровень видимости. Вероятно, причина, по которой это никогда не происходит с C, заключается в том, что авто будет тем, что предполагается, когда класс хранения не учитывается в объявлении переменной C. –