Originally Posted by
TonyG
Just so you know. I HATE C. Can't wait till i finish this semester.
Boy if ever there was a wrong place to say that!
One of the toughest lessons to learn here is that variables inside a function are destroyed when the function exits. Returning pointers to variables inside a function results in a ticking bomb just waiting to go off... It may work the first few times, but then it'll misfire as the stack space is reused and changed for other variables... and of course these things always happen when teach is grading assignments...
Why you should never return pointers to arrays ....
Code:
#include <stdio.h>
int* MyFunction(int a, int b, int c)
{ static int array[3];
array[0] = a;
array[1] = b;
array[2] = c;
return array; } // return a pointer.
int main (void)
{ int *a1, *a2; // int pointers
printf("calling a1 = MyFunction(10,20,30);\t");
a1 = MyFunction(10,20,30);
printf("a1 has %d %d %d\n",a1[0],a1[1],a1[2]);
printf("calling a2 = MyFunction(100,200,300);\t");
a2 = MyFunction(100,200,300);
printf("a2 has %d %d %d\n",a2[0],a2[1],a2[2]);
printf("\nLooks good, except...\t");
printf("a1 now has %d %d %d\n",a1[0],a1[1],a1[2]);
getchar();
return 0; }