gpt4 book ai didi

c - 在c中使用struct访问多个堆栈

转载 作者:行者123 更新时间:2023-11-30 14:56:42 24 4
gpt4 key购买 nike

具体来说,我想要访问多个堆栈,目的是从一个堆栈中弹出一个元素并将其插入另一个堆栈中。因此,我决定使用结构 (struct) 来访问它们。考虑以下代码,

    #define MAX 100
#include <stdio.h>
#include <string.h>

struct bag
{
int top;
int arr[MAX];
}harry,monk;

int pop(struct bag name);
void push(int data,struct bag name);

int main()
{
int i,temp;
harry.top=-1;
monk.top=-1;
push(3,harry);
push(1,harry);
push(1,harry);
push(4,harry);

temp=pop(harry);
push(temp,monk);

temp=pop(harry);
push(temp,monk);

for (i=0;i<4;i++)
printf("%d\t%d\n",harry.arr[i],monk.arr[i]);
return 0;
}

int pop(struct bag name)
{
int temp=name.arr[name.top];
name.top=(name.top)-1;
return temp;
}

void push(int data,struct bag name)
{
name.top=(name.top)+1;
name.arr[name.top]=data;
}

分析代码后我发现每次调用函数时,

    void push(int data,struct bag name)

名称.top从-1更改为0,但在调用时又恢复为-1再次。因此,分配给 harry.arr[harry.top] 的任何 vaue 最终都会分配给数组 harry.arr[-1]。 那么,有人有什么想法吗?

最佳答案

使用指针,因为现在您传递的参数被复制为函数内的本地参数,因此原始传递值保持不变。

关于c - 在c中使用struct访问多个堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464773/

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