我的代码是关于实现Stack和Queue的功能。如果你想知道我为什么不在我的程序中使用struct,因为我们的教师只允许我们使用指针而且我使用指针有点困惑。它还没有完成,我尽可能地尝试一次完成一个功能而不是跳到下一个功能。
#include <stdio.h>
int container[5];
int len=0;
正如我理解我的函数插入的这一部分,“len”被假设改变,因为它在每次使用函数时都会递增
int insert(int container[],int len)
{
int i,j,content,*incre;
incre=&len;
for(i=*incre;i<*incre+1;i++)
{
printf("Enter number:\n");
scanf("%d",&content);
container[i]=content;
}
(*incre)++;
}
int printcontent(int container[])
{
int i;
printf("Content of container:\n");
for(i=0;i<len+1;i++)
{
printf("%d ",container[i]);
}
printf("\n");
}
此部分询问用户是在容器中添加内容还是仅删除它。他们一次只能添加或删除一个。
int stack(int container[])
{
while(1)
{
int choice;
printf("What do you wanna do?\n");
printf("1.Insert\n2.Pop\n3.isEmpty\n4.Exit\n");
scanf("%d", &choice);
我检查了len的值,当我第一次使用insert时,它仍然是0而不是1。
if (choice==1)
{
insert(container,len);
printf("Value of len:%d\n",len);
printcontent(container);
}
else if(choice==4)
{
break;
}
}
}
main()
{
while(1)
{
int choice;
printf("What do you want to do?\n");
printf("1.Stack\n2.Queue\n3.Exit\n");
scanf("%d",&choice);
if(choice==1)
{.
stack(container);
}
else if(choice==3)
{
break;
}
}
}
感谢您的所有帮助。
答案 0 :(得分:0)
insert(...)
函数的作用是按参数int len
取值。这意味着如果您使用本地变量insert(...)
作为len
中的参数调用main(...)
或者其中 - 它实际上将局部变量len
的值复制到参数变量{在len
函数中{1}}。然后,insert(...)
函数内的变量len
是插入函数的本地变量。即使您声明一个名为insert(...)
的指针指向此incre
- 本地变量insert(...)
,这也不会改变。
然后参数变量len
递增 - 但由于它是len
函数的局部变量,您将看不到原始局部变量insert(...)
(这是在len
例如)被改变。
如果您想通过引用而不是按值传递原始main(...)
,则必须声明您的函数...
len
......或者像这样...
int insert(int container[], int* len) { ... } // Using raw pointers
...并像那样使用它(取决于上面的决定):
int insert(int container[], int& len) { ... } // Using references