【发布时间】:2021-11-13 15:09:17
【问题描述】:
此函数出现分段错误:
#include <stdio.h>
#include <stdlib.h>
int heap [999],heap2 [999];
int* addDigit(int *arr, int SIZE, int D) {
int con=0;
for (int i = 0; i < SIZE; i++)
con = con * 10 + arr[i];
con += D;
int p = 0;
while (con >= 0) {
heap[p] = con % 10;
con /= 10;
p++;
}
for (int i = 0; i < p; i++)
printf("%d ", heap[i]);
heap2[0] = 11;
heap2[1] = -1;
int *pp = heap2;
return pp;
}
这是主要功能:
int main() {
int N, digit;
scanf("%d", &N);
int arr[N];
for (int index = 0; index < N; index++) {
scanf("%d", &arr[index]);
}
scanf("%d", &digit);
int *ptr = addDigit(arr, N, digit);
int index = 0;
while (*(ptr+index) !=-1) {
printf("%d", ptr[index]);
index++;
}
return 0;
}
为什么会出现分段错误?
这个程序得到数组的输入,比如[1 2 3]和值k,比如3;
它应该打印1 2 6。
我在这里使用了两个全局声明的数组。
【问题讨论】:
-
“我在 GCC 编译器中遇到分段错误”——不,你不是。您在您的程序中遇到了分段错误,而不是在编译器中。
标签: arrays c segmentation-fault