在 Ada 中使用指针访问值

Access the value using pointer in Ada

我对 Ada 有点陌生,对这种语言的语法有一些困难。

我已经实现了一个堆栈,并向它压入一个值,例如,我需要使用一个函数Push(Stack_instance, value)

我需要很多这样的堆栈实例,而不是固定大小。所以我想使用指向堆栈的指针,每次我需要时都会创建新的堆栈对象。

现在,我遇到的问题是,在创建指向新堆栈的堆栈指针后,如何将值推送到该堆栈实例?我不能使用 Push(Stack, value),因为 Push 函数需要类型 Stack 而我有 Ptr_Stack。例如,在C中,我们有*ptr,我们可以通过它访问值,但是在Ada中有类似的东西吗?

您可以:

Push (Stack.all, Value);

如果您使用的是 Ada 2005 或更新版本,并且您的堆栈类型是标记类型,您还可以使用稍微更人性化的:

Stack.Push (Value);

最后,您还可以更改 Push 的声明以接受指向堆栈的指针,如:

procedure Push (Stack : not null access Stack_Type; Value : ...);
Push (Stack, Value);