开发者

Strange incompatible assignment of pointers

I am working on some C code.

There is a function like this;

void Get(double x_la[], 
doubl开发者_JS百科e y_la[], 
double z_la[])

in the function body, for some other reasons I create;

double (*la)[3];

As far as I understood, x_la, y_la and z_la are pointers of the type double.

I need to "connect" the pointers involved in "la" wiht the previous ones, so I thought trying;

la[0]=x_la;
la[1]=y_la;
la[2]=z_la;

but during compilation with gnu compiler I get the error;

error: incompatible types in assignment of 'double*' to 'double [3]'

What I am doing wrong? Otherwise, how could do it well?

Thanks

P.D. Is it exactly the same to declare

double y_la[]

or

double *y_la

?


You want double *la[3];.

As you have it, la isn't a pointer to double but a single pointer to an array of three things, and so each la[i] is still a pointer to something other than a double, and doubly problematic because you really only have one of them.

As to the second question, those are only the same in a parameter list, and even then only in an old-style declaration. Once you type in a prototype, then type conformance is governed by a more precise set of rules.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜