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

如何在C中使用指针递增变量?,c,function,pointers,C,Function,Pointers,我的代码是关于实现堆栈和队列的功能。如果你想知道为什么我不在我的程序中使用struct,那是因为我们的讲师只允许我们使用指针,而我对使用指针有点困惑。它还没有完成,我尽可能一次完成一个函数,而不是跳到下一个 #include <stdio.h> int container[5]; int len=0; 我检查了len的值,当我第一次使用insert时,它保持为0而不是1 if (choice==1) { insert(cont

我的代码是关于实现堆栈和队列的功能。如果你想知道为什么我不在我的程序中使用struct,那是因为我们的讲师只允许我们使用指针,而我对使用指针有点困惑。它还没有完成,我尽可能一次完成一个函数,而不是跳到下一个

#include <stdio.h>
int container[5];
int len=0;
我检查了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(…)
或任何地方调用
insert(…)
,将局部变量
len
作为参数,它实际上会将局部变量
len
的值复制到
insert(…)
函数内的参数变量
len
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
。。。或者像这样

int insert(int container[], int* len) { ... } // Using raw pointers
int insert(int container[], int& len) { ... } // Using references
。。。并这样使用(取决于上述决定):


对不起,一开始我误解了你的问题。将我的答案编辑到下面,实际上是为了给你一些可能对你有帮助的东西。:)我们在这里讨论两种不同的
len
s。
insert(…)
函数中的一个(它是
insert(…)
的一个参数)和调用函数时作为参数传递给
insert(…)
的一个。函数中的局部参数变量是
insert(…)确实被修改了。调用函数时所传递的变量没有。如果你阅读C++指南的一部分,解释了通过引用和传递值语义的部分,如果你还不完全理解为什么会发生这种情况,也许它会帮助你。我希望我至少能澄清这是发生的。
insert(container, &len); // With pointers
insert(container, len); // With references