我无法让它发挥作用。
我在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但我不知道这些指针如何通过其他功能
答案 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()
返回就会消失......