gpt4 book ai didi

c - 在 C 中如何使用指针递增变量?

转载 作者:行者123 更新时间:2023-11-30 17:02:12 24 4
gpt4 key购买 nike

我的代码是实现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;
}

}

}

感谢您的所有帮助。

最佳答案

insert(...) 函数的作用是按值获取参数 int len。这意味着如果您在 main(...) 或任何地方使用局部变量 len 作为参数来调用 insert(...) -它实际上将局部变量 len 的值复制到 insert(...) 函数内的参数变量 len 。 insert(...) 函数内部的变量 len 是插入函数的本地变量。即使您声明一个名为 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

...并像这样使用它(取决于上面的决定):

insert(container, &len); // With pointers
insert(container, len); // With references

关于c - 在 C 中如何使用指针递增变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36673140/

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