提问者:小点点

动态内存分配行为怪异


我刚发现我写不出这样的代码

#include <iostream>
using namespace std;

int main() {
    int* a, b;
    int N;
    cin >>N;
    a = new int[N];
    b = new int[N];
    return 0;
}

但我不明白为什么

int*a, b;

B的类型是什么?


共1个答案

匿名用户

把我的评论作为回答:

,而不是您所期望的。这是一个不在同一行声明多个变量的好理由。在单行上执行此操作的正确方法是

如果你想了解更多,这里列出了规则。在您的示例中,类别中,类别中。

当然,最好的方法是在声明变量时初始化它们,以避免潜在的bug:

int main() {
    int N = 0;
    std::cin >> N;
    int* a = new int[N];
    int* b = new int[N];

    //dont forget to delete
    delete[] a;
    delete[] b;
    return 0;
}