2015-03-30 2 views
2

У меня возникли проблемы с пониманием того, что означает это утверждение, может кто-нибудь объяснить это мне.Смущение о значении С, относящемся к структурам

Это структура у меня есть:

struct dataT 
{ 
    int m; 
}; 

struct stack 
{ 
    int top; 
    struct dataT items[STACKSIZE]; 
} st; 

Это Постулаты я путаюсь. Я не совсем понимаю, что это значит:

st.items[st.top].m 

ответ

4

ул: Объект стека структуры типа
st.top: Вершина стека
st.items: Массив элементов стека
st.items [st.top]: верхний элемент стека
st.items [st.top] .m: член m верхнего элемента стека

   st 
    +-----------------------+ 
    |   top   | st.top 
    +-----------------------+ 
    | +-------------------+ | 
    | |     |m| st.item[0] 
    | +-------------------+ | 
    +-----------------------+ 
    | +-------------------+ | 
    | |     |m| st.item[1] 
    | +-------------------+ | 
    +-----------------------+ 
    .      . 
    .      . 
    .      . 
    +-----------------------+ 
    | +-------------------+ | 
    | |     |m| st.item[STACKSIZE - 1] 
    | +-------------------+ | 
    +-----------------------+ 

если нажать 3 и 5 в стек, это будет похоже (стек растет вниз)

   st 
    +-----------------------+ 
    |   1   | st.top = 1 
    +-----------------------+ 
    |   3   | st.item[0].m = 3 
    +-----------------------+ 
    |   5   | st.item[1].m = st.item[st.top].m = 5 
    +-----------------------+ 
    .      . 
    .      . 
    .      . 
    +-----------------------+ 
    | xxxxxxxxxxxxxxxxxxx | 
    +-----------------------+ 
+1

Усилия, направленные на визуализацию стека. – haccks

1

Это выражение возвращает значение st.top го элемента из struct stack. Другими словами, если ваша реализация увеличивает в декрементах переменную top от struct stack, тогда она будет извлекать последний нажатый элемент.

2

Dot (.) Используется для доступа к элементам структуры.

st.items - доступ к элементам [STACKSIZE] массив

st.top - доступов верхушку го и использовали в качестве индекса

И элементы массива содержит dataT, и вы можете получить доступ к его единственный элемент, используя

st.items [st.top] .m

2

В этом заявлении

st.items[st.top].m 

й обозначает объект типа struct stack, потому что он был определен таким образом,

struct stack 
{ 
    //... 
} st; 

В st определен как имеющий тип структуры, то она имеет элемент данных с именем items Вот определение самой структуры.

struct stack 
{ 
    int top; 
    struct dataT items[STACKSIZE]; 
}; 

Таким образом запись st.items означает доступ к элементу данных items объекта st.Этот элемент данных структуры определяется как массив

struct dataT items[STACKSIZE]; 

с STACKSIZE элементами. Таким образом, запись st.items[st.top] означает доступ к элементу с индексом st.top массива items. Каждый элемент массива в свою очередь, имеет тип struct dataT Эта структура имеет член данных m

struct dataT 
{ 
    int m; 
}; 

Таким образом, запись

st.items[st.top].m 

означает доступ к элементу данных m элемента с индексом st.top массива items, который находится в tirn элемент данных объекта st