【发布时间】:2021-09-11 20:48:53
【问题描述】:
我正在编写一个需要将数字从十进制转换为二进制的 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()。
在执行时,我收到“分段错误(核心转储)”错误。我不知道为什么会这样。
PS:我是 C++ 初学者。我英语不太好,用谷歌翻译器
【问题讨论】:
-
在做 ans[i] = n / 2; 之前你检查过 i
-
您是否尝试过调试代码?查看导致错误的原因。
-
昆比,不,我没有。谢谢你的建议!
-
另外,考虑你在堆栈上递归地分配 100,000 个元素。您将用完堆栈空间。