我有一个数组:
int *BC_type_vel;
BC_type_vel = new int [nBou+1];
和一个功能:
void BC_update (const int type[], float X[]) {
for (int i=1; i<=nBou; ++i) {
if (type[i] == 1) {
std::cout << i << " " << type[i] << " " << BC_type_vel[i] << std:: endl;
for (int e=PSiS[i]; e<PSiE[i]; ++e) {
X[e] = X[elm[e].neigh[0]];
}
}
}
}
我称之为:
BC_update(BC_type_vel,U);
它输出为:
1 1 0
2 1 0
3 1 0
4 1 1
5 1 0
那么为什么函数参数不能正确复制值?
答案 0 :(得分:1)
我尝试使用gcc跟踪代码:
int *BC_type_vel;
int nBou = 10;
void BC_update (const int type[]) {
for (int i=1; i<=nBou; ++i) {
if (type[i] == 1)
std::cout << i << " " << type[i] << " " << BC_type_vel[i] << std:: endl;
}
}
int main () {
int i;
BC_type_vel = new int [nBou+1];
for (i=1; i<=nBou; ++i) {
if (i%2 == 0)
BC_type_vel[i] = i;
else
BC_type_vel[i] = 1;
}
BC_update(BC_type_vel);
return 0;
}
它给出了预期的结果:
1 1 1
3 1 1
5 1 1
7 1 1
9 1 1
所以问题出在代码中的其他地方。您需要向我们提供其余部分。