当前位置:嗨网首页>书籍在线阅读

84-结构和联合

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

B.9.4 结构和联合

声明一个有标记的结构或联合后,就可以在C++中使用这个标记作为类型名:

struct duo
{
     int a;
     int b;
};
struct duo m; /* C和C++都可以 */
duo n; /* C不可以,C++可以*/

结果是结构名会与变量名冲突。例如,下面的程序可作为C程序编译,但是作为C++程序编译时会失败。因为C++把 printf() 语句中的 duo 解释成结构类型而不是外部变量:

#include <stdio.h>
float duo = 100.3;
int main(void)
{
     struct duo { int a; int b;};
     struct duo y = { 2, 4};
     printf ("%f\n", duo); /* 在C中没问题,但是在C++不行 */
     return 0;
}

在C和C++中,都可以在一个结构的内部声明另一个结构:

struct box
{
     struct point {int x; int y; } upperleft;
     struct point lowerright;
};

在C中,随后可以使用任意使用这些结构,但是在C++中使用嵌套结构时要使用一个特殊的符号:

struct box ad;        /* C和 C++都可以 */
struct point dot;     /* C可以,C++不行 */
box::point dot;       /* C不行,C++可以 */