我无法理解这句话的含义,有人可以向我解释。
这是我的结构:
struct dataT
{
int m;
};
struct stack
{
int top;
struct dataT items[STACKSIZE];
} st;
这是我很困惑的陈述。我不太明白这意味着什么:
st.items[st.top].m
答案 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]
| +-------------------+ |
+-----------------------+
如果你将3
和5
推入堆栈,它会看起来像(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
变量递增,那么它将检索最后一个推送元素。