我有这个功能:
void update(int something, int nothing) {
something = something+4;
nothing = 3;
}
然后是函数调用:
int something = 2;
int nothing = 2;
update(something, nothing);
在函数内部,有些东西是6,没有东西是3,但因为我们没有返回任何东西,所以值不会改变。
对于一个值,我可以使用函数的返回值,但现在我认为我必须使用指针,对吧?
我想要从函数返回的东西和什么都没有,所以我可以在函数调用后使用新的值,我该怎么做? :)
答案 0 :(得分:8)
使用&
发送值并使用*
示例:
void update(int* something, int* nothing) {
*something = *something+4;
*nothing = 3;
}
int something = 2;
int nothing = 2;
update(&something, ¬hing);
两年没有使用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, ¬hing);
这就是你想要的,但它不是最好的风格,因为那些不了解代码的人无法理解你在做什么。 我的意思是,只要不是真的需要,就不应该修改参数变量。大多数函数都可以在没有这种行为的情况下编写。
如果你真的需要“返回”两个变量,我会这样做:
int update(int something, int* nothing) {
something += 4;
*nothing = 3;
return something;
}
int something = 2;
int nothing = 2;
something = update(something, ¬hing);
答案 2 :(得分:1)
使用吹码:
1)
void update(int * something, int * nothing)
{
*something = *something + 4;
*nothing = 3;
}
int something = 2;
int nothing = 2;
update(&something, ¬hing);
这意味着您将变量的地址传递给函数更新,并更改地址内的值。
OR
2)做出一些东西,没有全局变量。这也应该有效。但这不是一个好的解决方案。