从函数内部更改参数

Changing an argument from inside a function

本文关键字:参数 内部 函数      更新时间:2023-10-16

考虑函数A,B和C。

void A(){
  int arg;
  B(arg);
}
void B(int& arg){
  C(arg)
}    
void C(int& arg){
  arg = 10;
}

我希望我的参数的值由函数 C 设置。此代码给出错误。函数调用的顺序必须是 A 调用 B,它调用 C。怎么做?

这应该有效,但你必须这样写(重新排序函数定义):

void C(int& arg){
  arg = 10;
}
void B(int& arg){
  C(arg);
}    
void A(){
  int arg;
  B(arg);
}

或者转发声明之前的函数:

void B(int&);
void C(int&);
void A(){
  int arg;
  B(arg);
}
void B(int& arg){
  C(arg);
}    
void C(int& arg){
  arg = 10;
}

这样,A()知道B()知道C()

对源代码中的函数重新排序:C B A 而不是 A B C。

A()函数之前添加原型。在你的代码中,在编译A()的过程中,编译器对B()一无所知;因此,通过函数原型,您可以告诉编译器有关它的信息。同样适用于C()

void B(int&); 
void C(int&);
void A(){
    int arg;
    B(arg);
}
void B(int& arg){
    C(arg);
}    
void C(int& arg){
    arg = 10;
}
int main() {
    int a=20;
    A();
    return 0;
}