更改本地范围中的值

时间:2013-11-24 18:46:11

标签: c scope

有没有人知道我可以改变本地定义的变量值的方法?

#include <stdio.h>

int change(int x, int y);

int main()
{
    int x = 10;
    int y = 20;

    change(x,y);
    printf("x:%d y:%d\n", x, y);
}

int change(int x, int y)
{
    x = 20;
    y = 30;

    return(x);
    return(y);
}

我希望x和y在main()中打印20和30。 我尝试返回值,但这不起作用。我可以使用另一种方法吗?我在想指针,但我不知道从哪里开始。

3 个答案:

答案 0 :(得分:4)

使用指针:

void change(int *x, int *y)
{
    *x = 20;
    *y = 30;
}

并调用以下函数:change(&x, &y);为了便于阅读,您可能希望使用与xy不同的名称作为change参数,因为它们不相同输入x中声明的ymain变量。

答案 1 :(得分:0)

一些选项:

1)通过引用传递:int change(int &x, int &y);

2)返回一个数组并更改当前值:

int* temp = new int[2];
temp[0]=x+10;
temp[1]=y+10;
return temp;

3)直接返回打印:

printf("x:%d y:%d\n", change(x,y)[0], change(x,y)[1]);

答案 2 :(得分:0)

是的,这很容易 只需通过引用更改函数传递参数 而不是 int change(int x,int y)&gt; int change(int&amp; x,int&amp; y) 它会正常工作