Согласно ссылке, многие из них говорят, что они хранятся в сегменте данных. Это означает, что если я объявляю одно и то же имя статической переменной в двух других функциях, сегмент данных содержит больше, чем объявление одной переменной. Если это так, происходит столкновение или нет ?.Где хранятся статические переменные?
Итак, где хранятся статические переменные. Я думаю, что он хранится в текстовом сегменте. Таким образом, только при каждой итерации функции значение в статической переменной остается таким же. Если он находится в сегменте данных, происходит столкновение. Если он находится в стеке, область действия переменной увеличивается до времени жизни функции, поэтому она не может сохранить значение, хранящееся в переменной. Это правильно?
текстовый сегмент хранит программный код, переменные не могут быть сохранены в текстовом сегменте, потому что они не являются программным кодом. (Cap.obvious) – mangusta
* Статические переменные * или * ? И так, чтобы вы знали, это зависит от реализации (компилятор), а спецификация C ничего не говорит об этом (или такие вещи, как «сегменты»). –
Смятение, которое у вас есть, говорит о том, что если вы используете одно и то же имя в двух разных функциях, тогда будет столкновение имен. Это не относится к делу. Нет такого столкновения. Создаются две различные переменные. Пройдите мимо этого недоразумения, и ваш вопрос растворяется. –