zoukankan      html  css  js  c++  java
  • C语言typedef定义结构体数组,下面这段代码是什么意思?

    C语言typedef定义结构体数组,下面这段代码是什么意思?

     
    typedef struct vexnode
    {
    int vertex;
    arcnode* firstarc;
    }adjlist[Vnum];
    typedef不是去个别明吗?struct vexnode的别名是一个数组?
    我觉得他的本意是定义一个结构体struct vexnode然后定义一个结构体数组,
    为什么不直接这样写
    struct vexnode
    {
    int vertex;
    arcnode* firstarc;
    }adjlist[Vnum];
    2010-05-17 19:06提问者采纳
     
    首先注意,C语言中表示类型的关键字struct不可省略(C++中可以),否则结构体名本身不会被作为一个类型名。
    其次,typedef的语法是:
    typedef 类型 类型别名;
    这里的类型可以是一个结构体类型的定义。
    在C语言中,这类typedef有着简化结构体类型名的作用。之后引用这个结构体类型名,不需要重复输入struct。
    如果直接用结构体类型名定义变量,之后再引用结构体类型名时,还是比较麻烦。所以,一般先typedef定义一个类型别名,有需要时再利用这个类型别名定义变量。
    下面的定义:
    typedef struct vexnode
    {
    int vertex;
    arcnode* firstarc;
    }adjlist[Vnum];
    含义是:定义一个类型别名adjlist,这个类型是一个结构体类型为元素类型的长度为Vnum的数组,这个结构体类型的元素是int vertex和arcnode* firstarc。
    如果这样写:
    struct vexnode
    {
    int vertex;
    arcnode* firstarc;
    }adjlist[Vnum];
    ,那么adjlist就不是类型名,而是数组变量名。
    ====
  • 相关阅读:
    P1772 [ZJOI2006]物流运输
    P4290 [HAOI2008]玩具取名
    P1859 不听话的机器人
    P1841 [JSOI2007]重要的城市
    P2182 翻硬币
    P1908 逆序对(归并排序)
    P1010 幂次方(分治)
    P3386 【模板】二分图匹配
    P2158 [SDOI2008]仪仗队
    P1582 倒水(贪心 + lowbit)
  • 原文地址:https://www.cnblogs.com/jzhao/p/3250233.html
Copyright © 2011-2022 走看看