Проблема в том, что вы вычисляете последовательность, но вы возвращаете только ее первое число.
Возвращаемое значение betweenArray
равно int
вместо int *
, и вы делаете return * arr;
вместо return arr;
.После исправления этого в main
вам нужно будет сделать:
int *sequence = betweenArray(a,b);
for (i=0;i<range;i++)
printf("%d", sequence[i];
Но было бы лучше, если бы функция возвращала массив и количество элементов в нем, например, так:
int *betweenArray(int a, int b, int *numElements){
int *arr,i,range;
range = b - a + 1;
arr = (int *)malloc(range*sizeof(int));
for(i=0;i<range;i++){
arr[i] = a++;
}
if (numElements) {
*numElements = range;
}
return arr;
}
int main (int argc, const char * argv[]) {
int a,b,i;
int *sequence;
int range;
printf("Give numbers: ");
scanf("%d %d",&a,&b);
sequence = betweenArray(a,b,&range);
for(i=0;i<range;i++)
printf("%d\n",sequence[i]);
free(sequence); // Be nice, clean up.
return 0;
}