Разница между переменными stati c и переменными массива stati c - PullRequest
0 голосов
/ 02 апреля 2020

Я просто хотел узнать, имеет ли ключевое слово «static» такое же значение, когда оно используется в отношении переменных массива, а также обычных переменных? Например, я знаю, что когда-то объявленные переменные stati c имеют время жизни программы, а массив stati c означает, что размер массива нельзя изменить. Однако я хотел уточнить, имеют ли переменные массива stati c также время жизни программы и не инициализируются снова и снова в функции, в которой они определены, даже если функция вызывается несколько раз? Или ключевое слово «static» по отношению к массиву накладывает ограничения только на размер массива?

Если нет, не могли бы вы предложить метод, с помощью которого я мог бы сделать переменные массива stati c так, чтобы они могут передаваться между функциями, а также иметь время жизни программы, как обычные переменные c?

В настоящее время я использую язык C. Пожалуйста, потерпите меня, если это немного глупый вопрос, я новичок в программировании. Спасибо !!

1 Ответ

1 голос
/ 02 апреля 2020

Переменная, объявленная в области блока как static или в области файла, имеет длительность хранения c и соответствует времени жизни программы. Это в равной степени относится и к массивам и не массивам.

Размеры массивов не могут быть изменены в любом случае. Размер, указанный в объявлении, равен размеру массива за время его жизни.

Если вы говорите о ключевом слове static в квадратных скобках декларатора массива в параметре функции (например, void f(int x[static 2]);), тогда это совершенно другая вещь (одни и те же ключевые слова были повторно использованы в несвязанных целях), и это означает, что функция может быть оптимизирована, как если бы она была вызвана только с массивом, по крайней мере, такого размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...