指针作为C中的函数参数

时间:2009-10-13 21:39:43

标签: c pointers variables scope

我无法让它发挥作用。

我在main中启动了变量,我希望将其传递给其他函数并进行更改。我知道可以做到的唯一方法是使用指针或在主函数之外声明变量。 我更喜欢使用指针

怎么做?

例如

int main(){
    int variable1 = 5;
    add(&variable1, 6);
    printf("%d", variable1);

    return 0;
}

int add(int *variable1, int addValue){
    variable1 += addValue;

    return 0;
}

我想要打印11但我不知道这些指针如何通过其他功能

3 个答案:

答案 0 :(得分:6)

您只需要取消引用指针:

void add(int *variable1, int addValue)
{
    *variable1 += addValue;
}

在函数调用中,传入“& variable1”,表示“指向此变量的指针”。基本上,它传递main函数中variable1的确切内存位置。如果要更改它,则需要通过输入asterix“* variable1 + = 6”来取消引用。取消引用说'现在修改存储在这个指针的int'。

当你在函数def中使用asterix时,它意味着'这将是一个指向int的指针'。星号用于表示两种不同的东西。希望这有帮助!

哦,还要在函数调用中添加显式类型:

void add(int *variable1, int addValue)

答案 1 :(得分:5)

你只是忘了取消引用指针:

*variable1 += addValue;

所有函数参数都必须具有显式类型。

void add(int *variable1, int addValue)

答案 2 :(得分:1)

...你只需要*variable1 = addvalue;,它几​​乎是正确的...就像你刚刚向指针添加1一样,只要add()返回就会消失......