typedef 及其与struct的结合使用
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的结合使用相关推荐
- struct和typedef struct彻底明白了,引用自https://www.cnblogs.com/qyaizs/articles/2039101.html
struct和typedef struct彻底明白了 struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: t ...
- C语言结构体typedef struct详解
1.typedef关键字 C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字.下面的实例为单字节数字定义了一个术语 BYTE: typedef unsigned char BY ...
- struct和typedef struct的区别
在了解struct和typedef struct之前,我们先学习下typedef的定义和用法. typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(in ...
- 【C语言】typedef struct 和 struct 使用区别
目录 1. 什么是 typedef ? 1.1 typedef为C语言的关键字 1.2 在编程中使用typedef目的 1.3 typedef最简单的应用--为已知数据类型命名 1.3.1 type ...
- C语言——结构体struct与typedef的使用
我们常常在某些C语言代码中看到有时候typedef关键字和struct一起连用定义结构体,有时候只用struct关键字直接定义结构体,在此记录两者的一些用法,给自己做一个笔记,希望对大家也有所帮助.如 ...
- 三言两语搞懂c语言之struct与typedef(小白必看)
一.Struct 1.1 struct含义 1.2 struct用法1 1.3 struct用法2 1.4 struct用法3 二.typedef 三.Struct与typedef 一.Struct ...
- c语言中struct和c++中class实例对比
前言 实现游戏中简单的打怪升级的功能 c语言中的struct #include <stdio.h>typedef void(*Train)(struct player*, int); ty ...
- struct sockaddr与struct sockaddr in struct sockaddr un的区别和联系
在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下: typedef unsigned short sa_family_t ...
- 【c++】11.重写、覆盖、using、typedef
重写.覆盖.using.typedef 注意,重写和覆盖并不是一个意思. 重写: 重写是虚函数在子类中重新定义,使用override,override也可以不写,加上override是规范,语义更清晰 ...
最新文章
- 出现PNG文件错误的解决方案AAPT err(Facade for 1773557322): libpng error: Not a PNG file
- 史上最全SQL优化方案(二)
- python统计小说人物_Python数据分析之基情的择天记
- ES6简单总结(搭配简单的讲解和小案例)
- android第三方推送实现,Android--利用第三方推送实现APP伪保活(小米篇)
- 差分跳频MATLAB,基于Matlab的短波差分跳频通信仿真设计与实现
- JNDI学习总结(一)——JNDI数据源的配置(转)
- ECommon.Dapper 轻量级的dapper扩展
- 在R中创建晶须和盒图
- android5.1 xposed,Xposed框架oppo下载
- python实现DES加密解密
- PyCharm自定义背景图片、更换主题
- 计算天数(函数)(C语言实现)
- 服务器固态硬盘raid没了,HP服务器磁盘阵列坏了怎么办,数据如何恢复?
- basic计算机编程基础,QBASIC编程语言基础
- 如何从阿里云官方镜像站下载centos并安装
- APP上架各大应用市场教程:所需材料与注意事项
- Linux-hexdump命令调试event驱动—详解(13)
- 梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020
- shell-批量裁剪各个尺寸的图教程一(ImageMagick安装配置)
热门文章
- spring-boot使用教程之三:如何使用sts中的热部署来降低代码开发量
- 用JAVA制作小游戏——飞机大战(二)
- acm 凹多边形面积_解析几何|面积的计算
- Linux的文件权限与目录设置
- vSphereClient向ESXi主机分配许可证
- [20170302]什么是fuzzy.txt
- 适配器模式之对象适配器
- 《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)...
- 【新手入门篇】新浪微博应用开发之Java入门篇
- VMware 8.0不能手动安装Linux5.5(命令行)问题解决方法