刚学VC,有如下代码,可是看不懂,平时看到的结构体不是这样的啊,有谁能帮解释一下吗?
struct        //结构体的名字呢?
{
    int    iIndex ;
   TCHAR *szLabel ;
     TCHAR *szDesc ;
}
devcaps[] =              //devcaps[]是什么?
{

      HORZSIZE,     TEXT ("HORZSIZE"),TEXT ("Width in millimeters:"),   //为何都是逗号分隔? 
        
VERTSIZE,     TEXT ("VERTSIZE"),TEXT ("Height in millimeters:"),
        
HORZRES,      TEXT ("HORZRES"),     TEXT ("Width in pixels:"),
        
VERTRES,      TEXT ("VERTRES"),     TEXT ("Height in raster lines:"),
        
BITSPIXEL,    TEXT ("BITSPIXEL"),TEXT ("Color bits per pixel:")
};

解决方案 »

  1.   

    你不觉得,HORZSIZE,           TEXT   ("HORZSIZE"),TEXT   ("Width   in   millimeters:"),
    正好和int         iIndex   ;   TCHAR   *szLabel   ;         TCHAR   *szDesc   ; 
    对应么?
    上面的结构体在下面附了值呗。
      

  2.   

    devcaps[5] 这就是名字
    里面5个元素
      

  3.   

    这个struct没有名称  devcaps[]就是它的实例   
      

  4.   

    初始化数组元素时,是否需要用{}将各组元素分开呢?像下面那样有问题吗??
    struct{ 
         int         iIndex   ; 
       TCHAR   *szLabel   ; 
          TCHAR   *szDesc   ; 

    devcaps[]   =  
    {     {HORZSIZE, TEXT"HORZSIZE"),TEXT("Width   in   millimeters:")},  
                    
        {VERTSIZE, TEXT("VERTSIZE"),TEXT("Height   in   millimeters:")}, 
                    
        {HORZRES, TEXT("HORZRES"),TEXT("Width   in   pixels:")}, 
                    
        {VERTRES, TEXT("VERTRES"),TEXT("Height   in   raster   lines:")}, 
                    
        {BITSPIXEL, TEXT("BITSPIXEL"),TEXT("Color   bits   per   pixel:")} 
    };
      

  5.   

    devcaps[]  是一个数组
    类型为
    struct        //结构体的名字呢?
    {
           int         iIndex   ;
       TCHAR   *szLabel   ;
             TCHAR   *szDesc   ;
      

  6.   

    程序的意思是定义一个数组 并初始化
    devcaps[]为数组名
    数组类型类型为
    struct        //结构体的名字呢?
    {
                 int                   iIndex       ;
       TCHAR       *szLabel       ;
                     TCHAR       *szDesc       ;
    }  
      

  7.   

    struct{   
              int                   iIndex       ;   
       TCHAR       *szLabel       ;   
                TCHAR       *szDesc       ;   

    是一个结构体 
    devcaps[]为结构体数组名,上面已经说的很清楚了 
      

  8.   

    定义一个Struct类型的5维数组,并直接对数组进行初始化。
      

  9.   

    你可以这么看,
    首先是定义一个结构体:
    struct STRUCTNAME       

      int         iIndex   ; 
      *szLabel   ; 
      TCHAR   *szDesc   ; 
    }STRUCT_NAME ;然后是定义该结构体的数组:
    STRUCT_NAME devcaps[] =   
    {   
     {HORZSIZE,   TEXT"HORZSIZE"),TEXT("Width       in       millimeters:")},    
     {VERTSIZE,   TEXT("VERTSIZE"),TEXT("Height       in       millimeters:")},   
     {HORZRES,   TEXT("HORZRES"),TEXT("Width       in       pixels:")},   
     {VERTRES,   TEXT("VERTRES"),TEXT("Height       in       raster       lines:")},   
     {BITSPIXEL,   TEXT("BITSPIXEL"),TEXT("Color       bits       per       pixel:")}   
    };
    以逗号分开的只是初始化该数组元素的值。
    就和int a[] = {1,2,2,3,1};是一个道理。
      

  10.   

    struct{
    //...
    };定义以最后的分号结束,所以看最后的分号,则知道devcaps[]是所定义的结构体类型变量。
      

  11.   

    我刚开始时,也犯过迷糊,其实是这样的struct cs{
    ......
    } obj;   // 这时的obj代表定义了一个cs类型的变量typedef struct cs{
    ......
    } obj;   // 这时的obj是typedef将obj定义为cs类型。看你的例子
    struct        //结构体的名字呢? 

           int         iIndex   ; 
       TCHAR   *szLabel   ; 
             TCHAR   *szDesc   ; 
    }    // 注意这里没有分号; struct语句没有结束
    devcaps[]   =              //devcaps[]是什么? 
    {           HORZSIZE,           TEXT   ("HORZSIZE"),TEXT   ("Width   in   millimeters:"),   //为何都是逗号分隔?  
                    
    VERTSIZE,           TEXT   ("VERTSIZE"),TEXT   ("Height   in   millimeters:"), 
                    
    HORZRES,             TEXT   ("HORZRES"),           TEXT   ("Width   in   pixels:"), 
                    
    VERTRES,             TEXT   ("VERTRES"),           TEXT   ("Height   in   raster   lines:"), 
                    
    BITSPIXEL,         TEXT   ("BITSPIXEL"),TEXT   ("Color   bits   per   pixel:") 
    };
      

  12.   

    struct           

        int iIndex;   
        TCHAR *szLabel;   
        TCHAR *szDesc;   
    }devcaps[]={HORZSIZE, TEXT("HORZSIZE"), TEXT("Width in millimeters:"),                     
        VERTSIZE, TEXT("VERTSIZE"), TEXT("Height in millimeters:"),
        HORZRES, TEXT("HORZRES"), TEXT("Width in pixels:"), 
        VERTRES,  TEXT("VERTRES"), TEXT("Height in raster lines:"), 
        BITSPIXEL, TEXT("BITSPIXEL"), TEXT("Color bits per pixel:") }; 这是个直接定义结构体变量的形式,定义了个名为devcaps的结构体数组,后面是对数组进行了初始化,所以可以省略数组大小的显示定义。直到最后面一个;才结束整个结构体的定义,这是定义结构体时务必不能忘记的.数组的初始化能看懂吧?
    由于写得有点乱,不利于分析代码的结构,你将其排版好,各个结构也就更清晰了。
      

  13.   

    19楼滴还得加上typedef 吧!