为什么字符串参数会改变结果?

时间:2016-04-25 20:52:43

标签: c++

当我使用Code :: Blocks运行以下程序时,输出为

1 2 3
8129912 -1 3

当我使用ideone尝试时,我得到一个未指定的运行时错误。

我希望它能打印

1 2 3
1 2 3

有人可以解释为什么string参数有所作为吗?

int* foo() {
    int a[3] {1, 2, 3};
    return a;
}

int* bar(string x) {
    int a[3] {1, 2, 3};
    return a;
}

int main() {
    int *p = foo();
    cout << p[0] << " " << p[1] << " " << p[2] << endl;

    int *q = bar("X");
    cout << q[0] << " " << q[1] << " " << q[2] << endl;

    return 0;
}

0 个答案:

没有答案