zoukankan      html  css  js  c++  java
  • 定义struct类型

    看下下面的代码:

    typedef struct tagUser
    {
    char* pItem;
     
    short Age;
    tagUser* pNext;
    }User;

    typedef: 定义一个新类型或为一类型起个别名。

    struct: 表示为一结构体类型.

    tagUser:类型名称。以后可以以此类型声明变量,如 tagUser myUser;

    User: 类型 tagUser的别名,即它们是同种类型,可以这样声明一变量: User myuser;

    我们在User类型的结构体内会看到pNext的指针,它指向下一个本类型的地址,它的类型为struct  tagUser,即我们所说的链表。

    .

    如果我们变成以下代码

       

    typedef struct tagUser
    {

    char* pItem;
    short Age;
    User
    * pNext;  // 此处错误
    }User;

    你再编译一下,会发现编译器给出出错提示,为什么?

     因为在User* pNext处时,User这个类型的声明还不存在,故出错,但把User变为struct tagUser或tabUser就可以了,因为之前已声明了。

    如果不用typedef,则只是声明一个类型即:

      

     struct tagUser
    {
    char* pItem;
    short Age;
    struct tagUser* pNext;
    }User;

    此时的User不是类型而是一个 tagUser类型的一个变量。

     如:User.pItem=0;
          User.Age=20;
          User.pNext=0;

    如果再声明一个此结构的变量 则为: tagUser Another; Another为变量。

    以上用typedef声明类型也可以用以下格式:

      1.

    typedef struct tagUser User;
    struct tagUser
    {
    char *pItem;
    short Age;
    User
    * pNext; //用到了User关键字
    };

     2.

      

    typedef struct tagUser
    {
    char *pItem;
    short Age;
    struct tagUser* pNext; //与1的区别
    }User;

    通常的格式为:

      

     struct tagUser
    {
    char *pItem;
    short Age;
    struct tagUser* pNext;
    };

    typedef
    struct tagUser User;

    struct的初始化:

       如:

     

    tagUser myuser=
    {
    NULL,
    50,
    NULL
    };

    如果要得到某项的值,可用myuser.Age得到, .号为域操作符。



  • 相关阅读:
    c#中out与ref的用法与区别
    一次不该出现的bug
    js弹出蒙版
    foreach中不能修改元素的值
    C#中使用正则表达式来过滤html字符
    细微之处才能显示水平
    js画直线 拓荒者
    XSLT模板转换XML文档 拓荒者
    怪异的JavaScript Date对象 拓荒者
    [转]C++ 笔记点滴 拓荒者
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/2160410.html
Copyright © 2011-2022 走看看