我在 C 中有一个任务来实现抽象数据类型 STACK。数据类型的性质需要需要分配内存的键结构。我的问题是,我的导师现在坚持让初始化函数接收一个指向键结构的指针。init() 函数只会分配结构所需的内存并将字段设置为零,但传入的指针需要分配该内存位置。
如果不让函数返回指针或传入 2 星指针,我想不出一种方法来做到这一点——这两者都是不允许的。我知道函数原型必须是(其中 stackT* 是指向关键堆栈数据结构的指针):
void init(stackT* stack);
我想出了这个,它工作正常:
void init(stackT** stack){
*stack = (stackT*) malloc(sizeof(stack));
(*stack)->count = 0;
return;
}
但它不遵守分配的限制。
tl;博士版本:
基本上,如何将原始指针的地址传递给 STACK 数据结构 (&stackPtr) 到一个函数中,该函数将一星指针作为参数而不得到指针类型的警告?此外,一旦您将参数更改为(stackT* stack)
以下代码,即使我以两种方式传递相同的东西,它也不起作用 - 这就是我的问题所在。
我认为如果您打算将指针传递给指针,则需要将参数作为 2 星指针。当您取消引用指针时,编译器必须知道它正在处理什么。
无论如何,鉴于限制,我不确定如何做到这一点。在我看来,这只会让它变得不必要地更加困难。