2016-03-13 8 views
1

Когда это память для структуры, выделенной в C? Это когда я объявляю это или когда я создаю его экземпляр? Кроме того, почему статические переменные не могут использоваться внутри структуры?Распределение памяти для структуры

+3

Что означало бы «статическая переменная внутри структуры»? –

+0

что-то вроде этого: struct temp { статический int a; }; Когда я создаю экземпляр вышеуказанной структуры, компилятор говорит, что нет члена с именем 'a'. –

+1

'struct' _exactly_ совпадает с переменной. _Так же, почему статические переменные не используются внутри struct? _: Потому что он не был разработан на языке C. –

ответ

1

Когда вы определяете структуру, для которой вы НЕ выделяете память, вот почему вы можете использовать typedef, чтобы избежать написания struct my_struct_name. Когда вы определяете структуру, вы объявляете тип данных, поэтому они не обрабатывают данные до тех пор, пока вы не объявите экземпляр этой структуры.

struct point{ int x; int y; }; 

Это не будет занимать место, пока в функции или основной вы объявляете один, как, например,

int main(void){ 

    struct point mypoint1,mypoint2;//THIS IS WHEN MEMORY STARTS BEING ALLOCATED 
    return 0; 
} 

Что касается статической, я не думаю, что есть на самом деле точка объявить статический для структура? Почему вы должны сделать переменную static в структуре?

+0

Спасибо! Это было полезно. Хорошо, я понимаю, что мне не нужно создавать переменную static внутри структуры. Однако переменная, явно объявленная auto внутри структуры, также генерирует ошибку компилятора, не говоря о таком члене. Любая идея, почему это может произойти? В любом случае, переменные автоматически не по умолчанию? –

+0

Авто также имеет смысл выбросить ошибку компиляции, так как она выводит тип данных. Предположим, вы определили ту же самую структурную точку, которую я дал вам, положив auto x; Если в одной точке вы положите x = 0, а другой x = 0.0, у вас возникнет проблема. Еще раз. Я снова думаю, что на самом деле нет смысла, когда вы объявляете структуру, которую знаете, какие типы данных вы собираетесь использовать внутри нее. –

Смежные вопросы