typedef用法

用法1:给已知数据类型long起个新名字,叫byte_4。

typedef long byte_4;

用法2:在C中定义一个结构体类型的时候,
如果没有typedef,传统定义一个结构体:

struct Student
{int no;char name[12];
}Stu;

此时说明已经定义了一个结构体Stu变量,如果要重新新建,就必须使用struct Student stu1;
如果要使用typedef:

typedef struct Student
{int no;char name[12];
}Stu, student;

在声明变量的时候可以用Stu stu1;或者student stu2;(Stu和student同时为Student的别名)。

用法3:如果使用了typedef,这里也可以不写Student,不能写struct Student stu1;了

typedef struct
{int no;char name[12];
}Stu;

用法4:typedef可以掩饰复合类型,如指针和数组。
例如,你不用像下面这样重复定义有 81 个字符元素的数组:

char Line[81];
char text[81];

只需这样定义,Line类型即代表了具有81个元素的字符数组,使用方法如下:

typedef char Line[81];
Line text, line;

结构体指针用法

用法1:结构体要自引用时,Student1是错误用法。如果想引用成员next是另一个完整的结构,其内部还将包含它自己的成员next,这第二个成员又包含一个完整的结构,它还将包括它自己的成员next,这样重复下去,永无休止,内存都用完了,所以不合法。

struct Student
{int age;struct Student next;
}

正确的用法是:结构体自引用,只能自引用指针。编译器在结构的长度确定之前,就已经知道指针的长度,所以这种自引用是合法的。结构体的自引用在实现链表、树等高级的操作时作用很大。

struct Student
{int age;struct Student *next;
}

ps.这样是错误实例:

typedef struct
{int age;Student1 *next
}Student1, *StudentPtr;

虽然Student1代表了结构体,但是Student1类型名的声明是在末尾定义。当要声明struct{}的别名,内部无法识别Student1类型。

用法2:Student1是struct Student{}的别名,StudentPtr是Student的指针。

typedef struct Student
{int age;Student1 *next;
}Student1, *StudentPtr;


ps.
1.结构体指针需要初始化。
2.结构体指针的成员指针同样需要初始化。
3.若直接使用结构体,结构体中有成员指针,成员指针也需要初始化。

typedef用法和结构体指针用法相关推荐

  1. C语言中struct typedef 以及结构体指针用法

    struct .typedef以及结构体指针用法 typedef用法 结构体指针用法 结构体初始化   typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别 ...

  2. c语言的结构体与指针的区别,C语言 结构体与结构体指针用法总结

    在C语言开发中,结构体用到的机会很多.所谓结构体,就是定义一种里面包含多种元素的变量. 我们来看一个简单的例子.比如你想定义一个书名列表然后为每本书创建书名和作者作为书的信息.结构体变量定义如下: s ...

  3. 指向结构体的指针和指向结构体指针的指针

    例如,struct T *ptr;是指向一个结构体的指针,也可以当做一个结构体数组来用. 可以把结构体当做 int 来看,int* 类型即可以指向一个整数,也可以指向数组. struct T ** p ...

  4. Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针...

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:函数指针 1.函数指针顾名思义就是定义一个指针变量指向一个函数,和一级指 ...

  5. C++之指针探究(十八):typedef结合结构体指针

    typedef结合结构体指针 例: 运行结果: 附上例代码 //小问学编程 #include <stdio.h>//我们一次定义了2个类型 //第一个是结构体类型,有2个名字:struct ...

  6. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

  7. C语言结构体和结构体指针的简单用法

    C语言结构体和结构体指针的简单用法 这里总结一下自己的学习笔记,关于C语言当中的结构体指针的用法,以及结构体简单使用. 简单介绍一下今天出场的嘉宾–>结构体和结构体指针 什么是结构体: 1,定义 ...

  8. 用结构体指针访问结构体中的结构体指针(结构体指针的嵌套)

    结构体中的结构体指针是使用 一.问题背景 二.代码 三.说明 一.问题背景   日常工作中没有编程的机会,所以只看得懂代码,现在需要重新写一段代码,实现固定格式存储数据,需要使用到结构体和结构体指针. ...

  9. c语言 用结构指针输入,c语言结构体以及结构体指针的使用

    结构体: 正常定义一个结构体: typedef structnode{char ch[10];intlen; }Seq,*llink; 定义结构体指针: Seq *s; 或者 llink t; 之后关 ...

  10. C语言集锦 | 03 - C语言的复合数据类型(typedef关键字、结构体、枚举体、共用体)

    文档版本 更新时间 更新内容 v1.0 2020-09-14 初稿完成 文章目录 一.typedef关键词 二.结构体(重点) 1. 为什么需要结构体 2. 什么是结构体 3. 如何定义结构体 4. ...

最新文章

  1. memcached 系列2:memcached实例(转载)
  2. 实现PHP基本安全的11条准则
  3. 【Python-ML】SKlearn库原型聚类KMeans
  4. mvc中ajax的跳转,springmvc ajax 跳转的学习笔记
  5. boost::regex模块部分正则表达式迭代相关的测试程序
  6. PCA主成分分析 特征降维 opencv实现
  7. 在Linux下用源码编译安装apache2
  8. 第九十七期:新版Kite:实时补全代码,Python之父都发声力挺!
  9. 技术动态 | 67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?
  10. php 飞鹅云打印机_ThinkPHP飞鹅云打印接口
  11. Python的一些用法分享
  12. scite editor on mac
  13. 2. Mysql 升级 与 升级后 mysql --version 和 select version() 不一致问题
  14. 域名购买之后怎么使用
  15. lfs库下载_Git上传大文件夹LFS
  16. 优酷发布2018世界杯战略 视频云将提供全程技术保障
  17. Pytorch transform
  18. 防止短信接口验证码被恶意点击
  19. linux ps1 日期格式,Linux下bash的PS1
  20. 智云健康上市在即:长期亏损,美年健康俞熔已退出,未来难言乐观

热门文章

  1. C#使用VS2019打包安装程序(图标修改和默认安装路径修改)
  2. 觅风易语言视频教程全集(143集)
  3. flashfxp修改服务器密码,flashfxp服务器端设置
  4. UPS 笔记 (逆变电源 DSP)
  5. 各区区号的字段和名称
  6. 完整的网络安全解决方案
  7. c语言局域网聊天,局域网聊天的程序(C++版)
  8. Controller数据导出Excel 详细教程
  9. 在光标位置处插入图片
  10. 如何清空c盘只剩系统_怎么把C盘东西都删除只留系统东西