#include <stdio.h>
float func1(int);
//float *func2();
void func3(int, float *);
void main() {
printf("--- --- method 1 --- ---\n");
float var[2]={0};
int option=0;
var[option]=func1(option);
printf("option=0 -> var[0] is : %f\n", var[0]);
option++;
var[option]=func1(option);
printf("option=1 -> var[1] is : %f\n", var[1]);
// following func2() is not allowed to be compiled,
// because in func2(), we try to return a local array variable. it's not allowed in C.
/*
float var2[2]={0};
var2 = func2();
printf("var2[0] is : %f\n", var2[0]);
printf("var2[1] is : %f\n", var2[1]);
*/
printf("\n\n--- --- method 3 --- ---\n");
float var3[2]={8.8,9.9};
option = 0;
func3(option, var3);
printf("var3[0] is : %f\n", var3[0]);
printf("var3[1] is : %f\n", var3[1]);
option = 1;
func3(option, var3);
printf("var3[0] is : %f\n", var3[0]);
printf("var3[1] is : %f\n", var3[1]);
}
float func1(int option) {
switch(option) {
case 0:
return 0.0;
break;
case 1:
return 1.0;
break;
default:
return 10.0;
}
}
/*
float *func2() {
float array_in_func2[2]={0.0,1.0};
return array_in_func2;
}
*/
void func3(int option, float *array_from_caller) {
switch(option) {
case 0:
*(array_from_caller + option) = 0.0;
break;
case 1:
*(array_from_caller + option) = 1.1;
break;
default:
break;
}
}