我在VC里定义了一个结构体
struct shape{
int xy[8];
colorref color;
int next};
又用这个结构体定义了一个数组
shape shapes[19]
但是在给这个数组赋值,编译时说有语法错误
shapes[19]={1,1,1,1,1,1,1,1,RGB(0,0,0),3},
......电脑说错误是}前应加;
这是为什么呀
struct shape{
int xy[8];
colorref color;
int next};
又用这个结构体定义了一个数组
shape shapes[19]
但是在给这个数组赋值,编译时说有语法错误
shapes[19]={1,1,1,1,1,1,1,1,RGB(0,0,0),3},
......电脑说错误是}前应加;
这是为什么呀
shape shapes[19];
shapes[0].xy[0]=...;
shapes[0].xy[1]=...;
shapes[0].xy[2]=...;
...
shapes[0].xy[18]=...;
shapes[0].color=RGB(0,0,0);
shapes[0].next = 3;...两个结构体间可以通过MEMCPY进行内存拷贝
如果是这样的话
你可以这样改一下:
shapes[19]={{1,1,1,1,1,1,1},RGB(0,0,0),3};
看看有没有用。
struct shape{
int xy[8];
colorref color;
int next;};
~~~这里要有分号。C不是pascal,分号是每条C语句必须有的符号。
而不像pascal,分号只是用来分隔语句。其次:
shapes[19]={1,1,1,1,1,1,1,1,RGB(0,0,0),3},
能这样赋值吗?
C数组下标是从0开始的,你定义的数组只到shapes[18]类似shapes[19]={1,1,1,1,1,1,1,1,RGB(0,0,0),3},这种形式的赋值也只能是在定义变量的同时赋初值才行吧?
例如
struct shape shapes[2]={{1,1,1,1,1,1,1,1,RGB(0,0,0),3},{1,1,1,1,1,1,1,1,RGB(0,0,0),4}};
是对的。而
struct shape shapes[2];
shapes[0]={1,1,1,1,1,1,1,1,RGB(0,0,0),3};
就不对。
你可以这样写初始化shape shapes[19]={{1,1,1,1,1,1,1,1,2,10}};那么他会将这个值赋给shapes[0]。
如果你是后来赋值:
shape shapes[19];
则只能写成:
shapes[0].xy[0]=...
....
....
....
特别要搞清,就是初始化和赋值是有区别的~