1 //相当于为现有类型创建一个别名,或称类型别名。
 2 //整形等
 3 typedef int size;
 4
 5
 6 //字符数组
 7 char line[81];
 8 char text[81];//=>
 9
10 typedef char Line[81];
11 Line text, secondline;
12
13
14 //指针
15 typedef char * pstr;
16 int mystrcmp(pstr p1, pstr p2);//注:不能写成int mystrcmp(const pstr p1, const pstr p3);因const pstr p1解释为char * const cp(不是简单的替代)
17
18
19 //与结构类型组合使用
20 typedef struct tagMyStruct
21 {
22 int iNum;
23 long lLength;
24 } MyStruct;//(此处MyStruct为结构类型别名)=>
25
26 struct tagMyStruct
27 {
28 int iNum;
29 long lLength;
30 };//+
31 typedef struct tagMyStruct MyStruct;
32
33
34 //结构中包含指向自己的指针用法
35 typedef struct tagNode
36 {
37 char *pItem;
38 pNode pNext;
39 } *pNode;//=>error
40 //1)
41 typedef struct tagNode
42 {
43 char *pItem;
44 struct tagNode *pNext;
45 } *pNode;
46 //2)
47 typedef struct tagNode *pNode;
48 struct tagNode
49 {
50 char *pItem;
51 pNode pNext;
52 };
53 //3)规范
54 struct tagNode
55 {
56 char *pItem;
57 struct tagNode *pNext;
58 };
59 typedef struct tagNode *pNode;
60
61
62 //与define的区别
63 //1)
64 typedef char* pStr1;//重新创建名字
65 #define pStr2 char *//简单文本替换
66 pStr1 s1, s2;
67 pStr2 s3, s4;=>pStr2 s3, *s4;
68 //2)define定义时若定义中有表达式,加括号;typedef则无需。
69 #define f(x) x*x=>#define f(x) ((x)*(x))
70 main( )
71 {
72 int a=6,b=2,c;
73 c=f(a) / f(b);
74 printf("%d \\n",c);
75 }
76 //3)typedef不是简单的文本替换
77 typedef char * pStr;
78 char string[4] = "abc";
79 const char *p1 = string;
80 const pStr p2 = string;=>error
81 p1++;
82 p2++;
83
84 //1) #define宏定义有一个特别的长处:可以使用 #ifdef ,#ifndef等来进行逻辑判断,还可以使用#undef来取消定义。
85 //2) typedef也有一个特别的长处:它符合范围规则,使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。


 1 //
 2 //C中定义结构类型
 3 typedef struct Student
 4 {
 5 int a;
 6 }Stu;//申明变量Stu stu1;或struct Student stu1;
 7 //或
 8 typedef struct
 9 {
10 int a;
11 }Stu;//申明变量Stu stu1;
12
13 //C++中定义结构类型
14 struct Student
15 {
16 int a;
17 };//申明变量Student stu2;
18
19
20 //C++中使用区别
21 struct Student
22 {
23 int a;
24 }stu1;//stu1是一个变量 。访问stu1.a
25
26 typedef struct Student2
27 {
28 int a;
29 }stu2;//stu2是一个结构体类型 访问stu2 s2; s2.a=10;
30 //还有待增加。

转载于:https://www.cnblogs.com/diligentcalf/p/3558768.html

typedef 及其与struct的结合使用相关推荐

  1. struct和typedef struct彻底明白了,引用自https://www.cnblogs.com/qyaizs/articles/2039101.html

    struct和typedef struct彻底明白了 struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: t ...

  2. C语言结构体typedef struct详解

    1.typedef关键字 C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字.下面的实例为单字节数字定义了一个术语 BYTE: typedef unsigned char BY ...

  3. struct和typedef struct的区别

    在了解struct和typedef struct之前,我们先学习下typedef的定义和用法. typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(in ...

  4. 【C语言】typedef struct 和 struct 使用区别

    目录 1. 什么是 typedef ? 1.1 typedef为C语言的关键字 1.2 在编程中使用typedef目的 1.3 typedef最简单的应用--为已知数据类型命名 1.3.1  type ...

  5. C语言——结构体struct与typedef的使用

    我们常常在某些C语言代码中看到有时候typedef关键字和struct一起连用定义结构体,有时候只用struct关键字直接定义结构体,在此记录两者的一些用法,给自己做一个笔记,希望对大家也有所帮助.如 ...

  6. 三言两语搞懂c语言之struct与typedef(小白必看)

    一.Struct 1.1 struct含义 1.2 struct用法1 1.3 struct用法2 1.4 struct用法3 二.typedef 三.Struct与typedef 一.Struct ...

  7. c语言中struct和c++中class实例对比

    前言 实现游戏中简单的打怪升级的功能 c语言中的struct #include <stdio.h>typedef void(*Train)(struct player*, int); ty ...

  8. struct sockaddr与struct sockaddr in struct sockaddr un的区别和联系

    在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下: typedef unsigned short sa_family_t ...

  9. 【c++】11.重写、覆盖、using、typedef

    重写.覆盖.using.typedef 注意,重写和覆盖并不是一个意思. 重写: 重写是虚函数在子类中重新定义,使用override,override也可以不写,加上override是规范,语义更清晰 ...

最新文章

  1. 出现PNG文件错误的解决方案AAPT err(Facade for 1773557322): libpng error: Not a PNG file
  2. 史上最全SQL优化方案(二)
  3. python统计小说人物_Python数据分析之基情的择天记
  4. ES6简单总结(搭配简单的讲解和小案例)
  5. android第三方推送实现,Android--利用第三方推送实现APP伪保活(小米篇)
  6. 差分跳频MATLAB,基于Matlab的短波差分跳频通信仿真设计与实现
  7. JNDI学习总结(一)——JNDI数据源的配置(转)
  8. ECommon.Dapper 轻量级的dapper扩展
  9. 在R中创建晶须和盒图
  10. android5.1 xposed,Xposed框架oppo下载
  11. python实现DES加密解密
  12. PyCharm自定义背景图片、更换主题
  13. 计算天数(函数)(C语言实现)
  14. 服务器固态硬盘raid没了,HP服务器磁盘阵列坏了怎么办,数据如何恢复?
  15. basic计算机编程基础,QBASIC编程语言基础
  16. 如何从阿里云官方镜像站下载centos并安装
  17. APP上架各大应用市场教程:所需材料与注意事项
  18. Linux-hexdump命令调试event驱动—详解(13)
  19. 梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020
  20. shell-批量裁剪各个尺寸的图教程一(ImageMagick安装配置)

热门文章

  1. spring-boot使用教程之三:如何使用sts中的热部署来降低代码开发量
  2. 用JAVA制作小游戏——飞机大战(二)
  3. acm 凹多边形面积_解析几何|面积的计算
  4. Linux的文件权限与目录设置
  5. vSphereClient向ESXi主机分配许可证
  6. [20170302]什么是fuzzy.txt
  7. 适配器模式之对象适配器
  8. 《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)...
  9. 【新手入门篇】新浪微博应用开发之Java入门篇
  10. VMware 8.0不能手动安装Linux5.5(命令行)问题解决方法