为什么我会收到分段错误?

Why am I getting segmentation fault error?

我正在编写一个 C++ 程序,需要将数字从十进制转换为二进制。这是我的代码:

int* convertToBinary(int i, unsigned int n) {
    int ans[10000];
    if (n / 2 != 0) {
        convertToBinary(i + 1, n / 2);
    }
    ans[i] = n / 2;
    return ans;
}

void send_number(int num) {
    
    for (int j = 0; j < 16; j++) {
        printf("%d", convertToBinary(0, num)[j]);
    }   
}

在这种情况下,num 变量只取 0 到 65535 之间的自然值。

主要功能是send_number().

执行时出现 'Segmentation fault (core dumped)' 错误。我不明白为什么会这样。

PS: 我是C++初学者。我不太懂英语,使用 google 翻译器

有 2 个问题在起作用 - 作用域和(相关的)悬挂指针。 当您在函数内定义任何变量时 - 它仅在 in 该函数内有效。

convertToBinary returns 指向无效内存的指针。所以当你尝试打印它时 - 你正在使用 convertToBinary(0, num)[j]

想一想这是做什么的。您采用函数返回的无效指针并向其添加偏移量 j