有指针问题

时间:2016-03-15 21:18:20

标签: c pointers

我正在尝试创建一个具有获取int函数的程序,并使用指针将int增加1。

这是我试图做的但它不起作用......

#include <stdio.h>
#include <stdlib.h>

void inc(int x);

int main()
{
    int x = 0;

    printf("Please enter a number : ");
    scanf("%d", &x);

    printf("The value of 'x' before the function is - '%d'\n", x);
    inc(x);
    printf("The value of 'x' after the function is - '%d'\n", x);

    system("PAUSE");
    return 0;
}

void inc(int x)
{
    int* px = &x;
    *px = x + 1;
}

1 个答案:

答案 0 :(得分:1)

您现有的代码会将值的副本传递给函数,并且此副本会递增,因此原始代码将保持不变。

相反,您必须传递指针并重新分配指针指向的位置。

#include <stdio.h>
#include <stdlib.h>

void inc(int *x);

int main()
{
    int x = 0;

    printf("Please enter a number : ");
    scanf("%d", &x);

    printf("The value of 'x' before the function is - '%d'\n", x);
    inc(&x);
    printf("The value of 'x' after the function is - '%d'\n", x);

    return 0;
}

void inc(int *x)
{
    *x = *x+1;
}