我正在学习使用数组的堆栈,我在理解代码方面有问题。
typedef struct tagNode
{
int Data;
} Node;
typedef struct tagArrayStack
{
int Capacity;
int Top;
Node* Nodes;
} ArrayStack;
void AS_CreateStack(ArrayStack** Stack, int Capacity)
{
(*Stack) = (ArrayStack*)malloc(sizeof(ArrayStack));
(*Stack)->Nodes = (Node*)malloc(sizeof(Node)*Capacity);
(*Stack)->Capacity = Capacity;
(*Stack)->Top = -1;
}
void AS_Push(ArrayStack* Stack, ElementType Data)
{
Stack->Top++;
Stack->Nodes[Stack->Top].Data = Data;
}
这是密码我知道它是怎么运作的
但是我理解不了这个. Stack-〉Nodes[Stack-〉Top].Data为什么代码使用'.' Data?这个的含义和名称是什么?
我不知道".“在C语言中是如何工作的
1条答案
按热度按时间eagi6jfj1#
Stack
是指向ArrayStack
的指针。Stack->Nodes
是Stack
指向的ArrayStack
中的Nodes
成员。它是指向Node
的指针,特别是指向Node
元素数组中的第一个Node
。Stack->Nodes[Stack->Top]
是Node
元素数组中索引为Stack->Top
的元素。Stack->Nodes[Stack->Top].Data
是Node
元素的Data
成员。Stack->Nodes[Stack->Top].Data = Data;
将Stack->Nodes
指向的数组中索引为Stack->Top
的Node
元素的Data
成员的值设置为Data
的值,该值是函数的参数。Data
在这个语句中有两个含义。在.
之后,它引用结构的成员。在=
的右侧,它本身引用函数参数。