如何使用C中的指针增加变量?

时间:2016-04-17 05:50:41

标签: c function pointers

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

    }

}

感谢您的所有帮助。

1 个答案:

答案 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