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得到, .号为域操作符。



  • 相关阅读:
    Java8新特性Stream详细教程
    自定义注解!绝对是程序员装逼的利器!!
    如何处理重复请求/并发请求的
    C#字符处理
    mysql 索引
    mysql事件【定时器】
    JS日期,金钱处理
    Controller中使用@Value无法获取属性值
    druid连接池的配置
    mybatiste报错java.lang.ClassCastException
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/2160410.html
Copyright © 2011-2022 走看看