C函数,使用指针代替返回

时间:2013-09-17 06:55:08

标签: c pointers

我有这个功能:

void update(int something, int nothing) {
    something = something+4;
    nothing = 3;
}

然后是函数调用:

int something = 2;
int nothing = 2;

update(something, nothing);

在函数内部,有些东西是6,没有东西是3,但因为我们没有返回任何东西,所以值不会改变。

对于一个值,我可以使用函数的返回值,但现在我认为我必须使用指针,对吧?

我想要从函数返回的东西和什么都没有,所以我可以在函数调用后使用新的值,我该怎么做? :)

3 个答案:

答案 0 :(得分:8)

使用&发送值并使用*

接收这些值

示例:

void update(int* something, int* nothing) {
    *something = *something+4;
    *nothing = 3;
}

int something = 2;
int nothing = 2;

update(&something, &nothing);

两年没有使用C,但我认为这是正确的。

答案 1 :(得分:1)

您要做的是引用和取消引用变量。 通过调用&variable,您可以通过调用*variable来获取指向该变量的指针,该变量指向的是什么。 Here you can get more information about pointers.

void update(int* something, int* nothing) {
    *something = *something+4
    *nothing = 3
}

int something = 2;
int nothing = 2;

update(&something, &nothing);

这就是你想要的,但它不是最好的风格,因为那些不了解代码的人无法理解你在做什么。 我的意思是,只要不是真的需要,就不应该修改参数变量。大多数函数都可以在没有这种行为的情况下编写。

如果你真的需要“返回”两个变量,我会这样做:

int update(int something, int* nothing) {
    something += 4;
    *nothing = 3;
    return something;
}

int something = 2;
int nothing = 2;

something = update(something, &nothing);

答案 2 :(得分:1)

使用吹码:

1)

  void update(int * something, int * nothing) 
    {
        *something = *something + 4;
        *nothing = 3;
    }

    int something = 2;
    int nothing   = 2;

    update(&something, &nothing);

这意味着您将变量的地址传递给函数更新,并更改地址内的值。

OR

2)做出一些东西,没有全局变量。这也应该有效。但这不是一个好的解决方案。