C++ 为何会改变行参的值?!
flyxx 2009-02-10 12:24:52 template <class T>
T a(T x[])
{
for(int i = 0; i<10; i++)
{
x[i]=0;
cout << x[i] << endl;
}
}
int main()
{
int *x = new int[10];
int y[10];
for(int i = 0; i<10; i++)
{
y[i] = i;
x[i] = i;
cout << "++++ x[i]=" << x[i] << " y[i]=" << y[i] << endl;
}
a(x);
a(y);
for(int i = 0; i<10; i++)
{
cout << "---- x[i]=" << x[i] << " y[i]=" << y[i] << endl;
}
cout << "测试完毕!任意键继续...." << endl;
cin.peek();
return 0;
}
---------------
运行结果:
++++ x[i]=0 y[i]=0
++++ x[i]=1 y[i]=1
++++ x[i]=2 y[i]=2
++++ x[i]=3 y[i]=3
++++ x[i]=4 y[i]=4
++++ x[i]=5 y[i]=5
++++ x[i]=6 y[i]=6
++++ x[i]=7 y[i]=7
++++ x[i]=8 y[i]=8
++++ x[i]=9 y[i]=9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
---- x[i]=0 y[i]=0
测试完毕!任意键继续....
为什么函数a()把main函数的两个数组做为行参传递给a(),结果都被a()修改了?!