我在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},
......电脑说错误是}前应加;
这是为什么呀

解决方案 »

  1.   

    结构体是逐一给成员变量赋值的把
    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进行内存拷贝
      

  2.   

    你是要给shapes[19]这一个单元赋值吗?
    如果是这样的话
    你可以这样改一下:
    shapes[19]={{1,1,1,1,1,1,1},RGB(0,0,0),3};
    看看有没有用。
      

  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};
    就不对。
      

  4.   

    因为对结构体的初始化和赋值是不同的。
    你可以这样写初始化shape shapes[19]={{1,1,1,1,1,1,1,1,2,10}};那么他会将这个值赋给shapes[0]。
    如果你是后来赋值:
      shape shapes[19];
    则只能写成:
      shapes[0].xy[0]=...
    ....
    ....
    ....
    特别要搞清,就是初始化和赋值是有区别的~
      

  5.   

    shapes[19]={{1,1,1,1,1,1,1,1},RGB(0,0,0),3},