gpt4 book ai didi

c - 指针 C 的问题

转载 作者:行者123 更新时间:2023-11-30 19:35:49 26 4
gpt4 key购买 nike

我认为我对指针有一定的了解,但我的代码遇到了问题。它总是崩溃。

每当我尝试访问堆栈并将其内容传递给 b1 时,我的程序就会崩溃。

int base(int l, int base, int *stack[2000])
{
int b1; //find base L levels down
b1 = base;

while (l > 0)
{
b1 = *stack[b1 + 1];
l--;
}

return b1;
}

编辑:该程序是使用堆栈架构的虚拟机分配。我传递的是当前的基本激活记录,以及我试图访问的词典级别。简单地说,它们是整数。我通过指针访问我的堆栈并返回我应该处于的激活级别的基数,但我不完全确定我是否正确使用了指针。

最佳答案

很确定您会再次取消对指针的引用,并在初始声明中添加一个额外的星号。如果您的函数接受整数数组,正如您的编辑所建议的那样,请将其声明为

int base(int l, int base, int stack[2000])

int *stack[2000] 是一个指向整数的指针数组,而不是一个整数数组。然后,您需要更改 b1 = *stack[b1 + 1]; 以仅从数组中获取整数,而不是取消引用指向整数的指针:

b1 = stack[b1 + 1];

最后,您可以在同一行中声明并分配b1:

int b1 = base;

实际上,您根本不需要b1。由于您可以根据 C 是按值传递的事实来递减 l,因此您可以以相同的方式重新分配 base,不会出现任何问题。

关于c - 指针 C 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42009197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com