Почему мы не можем объявить статическую переменную в структуре на языке программирования C?Почему мы не можем объявить статическую переменную внутри структуры на языке программирования C?
ответ
В С ++ структура в основном класс со всеми членами общественных, так статическая переменная имеет смысл там.
В C структура представляет собой непрерывный фрагмент памяти с полями. Статическая переменная не может быть создана без ее изменения (чтобы реализовать статичность, вам нужно ссылаться на единую ячейку памяти из всех структур такого типа), и это будет большой разницей в сложности без особой пользы.
Поскольку C не является C++.
Поскольку стандарт C не позволяет этого.
Потому что он не имеет содержательную интерпретацию в С.
(zing) –
Поскольку в c мы не можем получить доступ к статической переменной с именем структуры. В C++ мы можем получить доступ к статической членной переменной с именем класса, как показано ниже.
ИмяКласса :: staticVariableName
stucture 'C' не дают такого объекта.
Поскольку стандарт ISO C говорит, что вы не можете. Но если вы скажете, почему вы считаете, что вам это нужно, возможно, будет возможным обходное решение для всего, что будет. –
Даже в C++ нет такой вещи, как переменная 'static' внутри структуры. Это члены 'static', и очень жаль, что C++ перегружает ключевое слово' static' для еще одной совершенно другой семантики. В частности, это означает противоположность 'static' в области файлов или функций, а именно символ, который отображается глобально. Я действительно этого не вижу. Если бы вы попросили «extern», это * могло бы иметь смысл в C, но это будет другая история. –
@Jens: 'static' в области функций означает, что все вызовы функции имеют один и тот же экземпляр переменной. Аналогично, 'static' в классе означает, что все экземпляры класса имеют один и тот же экземпляр поля. Мне кажется, что повторное использование ключевого слова совершенно хорошо мотивировано. –