【发布时间】:2013-04-18 13:37:20
【问题描述】:
我想通过引用函数来传递地图。 代码如下:
void test(map<int, double *> &a);
int main(){
map<int, double *> a;
test(a);
cout << a[1][1] << endl;
return 0;
}
void test(map<int, double*> &a)
{
double red[] = {1.1, 2, 3};
a[1] = red;
}
问题是,a[1][1] 应该是 2。但是,当我执行程序时,它给出了一个大数字,例如 1.73e120 !!!
【问题讨论】:
-
很奇怪。您的代码在此处输出 2:ideone.com/lyQAzd
-
@tacp 这是未定义的行为。它可以输出任何东西。
-
@juanchopanza 谢谢。了解 C++ 中所有未定义的行为可能会很好。
-
@tacp 好吧,越界访问数组是一种情况。
标签: c++ map containers pass-by-reference