【发布时间】:2012-09-01 23:14:01
【问题描述】:
所以基本上我正在做的是将一个结构数组从一个函数传递到另一个函数。它适用于显示功能,但不适用于最大功能:/我到底做错了什么?
void show( const ABC & x ){
cout<<"{"<<x.n<<",'"<<x.c<<"',{"<<x.a[0]<<","<<x.a[1]<<","<<x.a[2]<<"}}";
}
void show( const ABC arr[], unsigned elements ){
for(unsigned i=0; i<elements; i++)
show(arr[i]);
}
以下不起作用
double max( const ABC & x ){
double max=x.a[2];
if(x.a[1]>max)
max=x.a[1];
if(x.a[0]>max)
max=x.a[0];
return max;
}
double max( const ABC arr[], unsigned elements ){
double max=arr[2].a[3];
for(unsigned i=0; i<elements; i++)
if(max<max(arr[i])){
max=max(arr[i]);
}
return max;
}
【问题讨论】:
-
以后考虑让编译器明确给出的错误。交叉引用错误指向的行也非常有帮助。它有助于弄清楚发生了什么。
-
您可能还想将
const ABC arr[]替换为const ABC* arr。这两个语句可能是等效的,您不必修改任何引用“arr”的内容,但如果它给您带来某种访问错误,那么值得一试。
标签: c++ arrays function pointers struct