函数在C ++中不是独立的?

时间:2012-12-22 09:18:39

标签: c++ function

int evens(int x,int y);
int pdiv(int x,int y,int z);

void main(void)
{
  clrscr();
  cout<<"Enter the number x an y";
  int x,y;
  cin>>x>>y;
  evens(x,y);
  getch();
}

int evens(int x,int y)
{
  cout<<"Even Numbers between x and y are"<<endl;
  for (int z=x;z<y;z++)
  {
  if(z%2==0) cout<<z<<"  "<<pdiv(z,x,y);
  }
  return 0;
}

int pdiv(int x,int y,int z)
{
  cout<<"Positive divisors of the given number are"<<endl;
  for(int a=y;a<=z;a++)
  {
    if(x%a==0)
    cout<<a<<"  ";
  }
}

在上述计划中,每当我在pdiv(z,x,y)函数中evens(x,y)使用evens(x,y) x y 的值时开始改变。如果我不在pdiv()中拨打evens(),则不会发生这种情况。 我被告知函数是独立的,他们不应该改变其他函数的值,我花了几个小时在这个程序上,我无法弄清楚我做了什么错。

为什么我的函数不像独立函数那样?

1 个答案:

答案 0 :(得分:2)

C ++中的函数是“独立的”,它们不能更改另一个函数中的变量值,除非您通过引用传递参数或执行一些黑客攻击(可能您不这样做)。但是,您可能希望改进几件事情:

  1. pdiv应该返回一些int结果

  2. 您调用pdiv(z,x,y)的方式有点误导,因为在函数内部,您将使用x的{​​{1}}变量z。在C ++中,您不按名称传递参数,顺序很重要。如果你不改变变量的含义并调用evens(),那就更清楚了。

  3. {li>

    pdiv(x,y,z)中,您应为变量main()x分配一些初始值。

  4. 为什么你甚至认为变量正在发生变化?