对与结构相关的C语句的含义感到困惑

时间:2015-03-30 13:14:28

标签: c

我无法理解这句话的含义,有人可以向我解释。

这是我的结构:

struct dataT
{
    int m;
};

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

这是我很困惑的陈述。我不太明白这意味着什么:

st.items[st.top].m

4 个答案:

答案 0 :(得分:4)

  

st :类型为struct stack的对象 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]
  | +-------------------+ |
  +-----------------------+

如果你将35推入堆栈,它会看起来像(Stack正在向下增长)

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

答案 1 :(得分:2)

Dot(。)用于访问结构的元素。

  

st.items - 访问项[STACKSIZE]数组

     

st.top - 访问st的顶部并用作索引

items数组包含dataT,您可以使用

访问它唯一的元素
  

st.items [st.top]的.m

答案 2 :(得分:2)

在本声明中

st.items[st.top].m

st表示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的数据成员中的数组st的索引{{1}}

答案 3 :(得分:1)

此语句从st.top检索struct stack元素的值。换句话说,如果您的实现以递减top struct stack变量递增,那么它将检索最后一个推送元素。