刚学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:")
};
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:")
};
解决方案 »
- mfc数据库应用程序的发布
- 一个关于套接字关闭的时间问题
- 为什么我的TreeCtrl不能显示数据呀?(请看代码)
- 两个进程共享读写一个文件,文件内容会被破坏吗?
- 想问一个问题模糊图像恢复是否可达到如下效果?
- 请教,VC中使用ADO时老是无法创建com对象,为什么?
- 关于CComboBox消息的处理
- 如何判断USB设备插拨
- 关于速度,效率,COM VB IIS ASP 高手请进
- 被朋友拉下水了!!!谁对物业管理软件熟?进来帮帮忙吧!
- 用EVC++开发的PDA系统,数据库是sqlite,为什么在PDA上打开时,显示乱码?
- 串口 银行用密码键盘,怎么区分“请输入密码”,和“请再次输入密码”,信号量吗?
正好和int iIndex ; TCHAR *szLabel ; TCHAR *szDesc ;
对应么?
上面的结构体在下面附了值呗。
里面5个元素
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:")}
};
类型为
struct //结构体的名字呢?
{
int iIndex ;
TCHAR *szLabel ;
TCHAR *szDesc ;
}
devcaps[]为数组名
数组类型类型为
struct //结构体的名字呢?
{
int iIndex ;
TCHAR *szLabel ;
TCHAR *szDesc ;
}
int iIndex ;
TCHAR *szLabel ;
TCHAR *szDesc ;
}
是一个结构体
devcaps[]为结构体数组名,上面已经说的很清楚了
首先是定义一个结构体:
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};是一个道理。
//...
};定义以最后的分号结束,所以看最后的分号,则知道devcaps[]是所定义的结构体类型变量。
......
} 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:")
};
{
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的结构体数组,后面是对数组进行了初始化,所以可以省略数组大小的显示定义。直到最后面一个;才结束整个结构体的定义,这是定义结构体时务必不能忘记的.数组的初始化能看懂吧?
由于写得有点乱,不利于分析代码的结构,你将其排版好,各个结构也就更清晰了。