【发布时间】:2017-09-19 01:55:45
【问题描述】:
我有一个用于 Collatz 猜想的函数,它返回一个 int 数组,但我不断收到分段错误错误,不知道为什么。
int n=1;
int* col fuction(int x){
int *totalList;
totalList[0]=x;
while (x != 1){
if (x%2==0){
x=x/2;
}else{
x= 3* x + 1;
}
totalList[n]= x;
n++;
}
totalList[n+1]=1;
return totalList;
}
假设返回连续的整数,每个数字之间有逗号。我这样称呼它:
int *colAns;
colAns= col(num);
for (int k =0; k< n; k++){
printf("%d", colAns[k]);
if(colAns[k] != 1){
printf(",");
}
}
printf("\n");
【问题讨论】:
-
totalList[0] = x使用未初始化的指针totalList运行。 -
另一方面,您应该使用
-Wall和-Wextra打开编译器警告,因为它们应该能够警告您尝试取消引用未初始化指针的此类问题。 -
使用
malloc为totalList分配内存。
标签: c arrays function pointers