Hi guys!

I'm new to this world, and I'm finding some problems on pointers (as most of people on the 1st time they encounter them).

I'm going to explain my problem step by step. First of all i try to define a new struct for complex numbers (maybe some already exist).

My code is:

Now I need to write a function that, when called, generates a vector of complex numbers.Code:typedef struct { float real; float img; } complex;

These numbers must have img part =0 and real part = +1.0 or -1.0, in random way. So I thinked I could use rand() function to generate random int numbers. If generated int %2 ==0 then real part of my complex number is +1.0, in the other case -1.0.

Maybe there's a finer way to implement this, but it should work I think. After I filled my vector, I return a pointer to the 1st element of the vector.

My code:

At this point, my main function should get this pointer and print, for each element of the vector, real part and img part. It compiles but it sometimes gives strange values, like 0.0, or extremely big numbers, or img parts =/=0, so I tought there's some problem with pointers.Code:#include "complesso.c" #include <time.h> #define LENGTH 1023 complex* randomarray(){ complex vettore[LENGTH]; complex *first; int i, iseed; iseed = time(NULL); srand (iseed); for (i=0; i<LENGTH; i++) { vettore[i].img=0.0; if(rand()%2==0) vettore[i].real=-1.0; else vettore[i].real=1.0; } first=&vettore[0]; return first; }

My code:

Any suggestion will be appreciatedCode:#include <stdio.h>#include "complesso.c" int main(){ int i; complex *first; complex x; first=randomarray(); for (i=0;i<1023;i++){ x= *(first+i); printf("%d %1.1f %1.1f \n", i, x.real, x.img); } system("PAUSE"); }