Есть несколько проблем с вашей программой.
int * result = calc(x,y,z);
- но calc
возвращает int
(так как тип возврата не указан)
static int * result[3] = {0,0,0};
- result
- массив размером 3
указателей на int. Но вы инициализировали их как 0
каждый. Это не проблема точно, если вы понимаете, что здесь происходит. На самом деле, простой массив был бы просто прекрасен.
return result;
вы возвращаете result
, но типом возврата функции calc
по умолчанию является int.
- Прототипа для функции
calc
не существует.
Вот как должна выглядеть ваша программа:
#include<stdio.h>
int * calc(int, int, int);
void main()
{
int x,y,z;
printf("Enter any three numbers separated with a single space : ");
scanf("%d %d %d", &x, &y, &z);
int * result = calc(x,y,z);
printf("The big number is %d \n The middle number is %d \n The small number is %d", result[0], result[1], result[2]);
}
int *calc(int x, int y, int z){
static int result[3] = {0,0,0};
if(x>y && x>z){
result[0] = x;
if(y<z){
result[2] = y;
result[1] = z;
}
}else if(y>x && y>z){
result[0] = y;
if(x<z){
result[2] = x;
result[1] = z;
}
}else if(z>x && z>y){
result[0] = z;
if(y<x){
result[2] = y;
result[1] = x;
}
}
return result;
}
Сказав это, ваша программа, похоже, не работает так, как вы намереваетесь. Посмотрите на выводы ниже:
Enter any three numbers separated with a single space : 12 33 4
The big number is 33
The middle number is 0
The small number is 0
shell returned 69
Enter any three numbers separated with a single space : 100 3 4
The big number is 100
The middle number is 4
The small number is 3
shell returned 70
Возможно, вы захотите поработать над логикой.