19、C语言 —— typedef

1、关键字typedef可以为各种数据类型定义一个新的名字(别名)

1typedef int Integer;    // 为int起个别名叫Integer 2 3Integer i = 0;    // 相当于 int i = 0;

2、给指针定义一个别名

1// 之前我们是这样定义一个指针的 2char *s = "cobish"; 3 4// ----------------------------  5 6// 现在可以这样 7typedef char * String; 8 9String s = "cobish";

3、给结构体起别名

1// 之前我们是这样定义结构体的 2struct Point { 3    int x; 4    int y; 5}; 6 7struct Point p = {3, 4}; 8 9// -------------------------------------------------------- 10 11// 现在可以这样,给结构体Point起个别名叫MyPoint 12typedef struct Point { 13    int x; 14    int y; 15} MyPoint;  16 17MyPoint p = {3, 4}; 18 19// -------------------------------------------------------- 20 21// 当然结构体Point名字这时就可以省略了 22typedef struct { 23    int x; 24    int y; 25} MyPoint; 26 27MyPoint p = {3, 4};

4、给结构体指针起别名

1typedef struct Point { 2    int x; 3    int y; 4} * PP; 5 6struct Point p = {3, 4}; 7PP pp = &p; 8printf("x=%d\n", pp->x);    // 输出:x = 3 9 10// -------------------------------------------------------- 11 12// 或者可以先给结构体起别名,再给结构体指针起别名 13typedef struct Point { 14    int x; 15    int y; 16} MyPoint; 17 18typedef MyPoint * PP; 19 20MyPoint p = {3, 4}; 21PP pp = &p; 22printf("x=%d\n", pp->x);    // 输出:x = 3

5、给枚举起别名

1// 原先 2eumn Season {spring, summer, autumn, winter}; 3eumn Season s = spring; 4 5// -------------------------------------------------------- 6 7typedef eumn Season { 8    spring, 9    summer, 10    autumn, 11    winter 12} MySeason; 13 14MySeason s = spring; 15 16// -------------------------------------------------------- 17 18// 可省略枚举名 19typedef eumn { 20    spring, 21    summer, 22    autumn, 23    winter 24} Season; 25 26Season s = spring;

6、typedef 与 #define 的区别

1// 虽然这两个看起来很像 2typedef char * String; 3#define String char *; 4 5String s1 = "cobish"; 6 7// -------------------------------------------------------- 8 9// 但实际来说,#define只是纯粹的字符串替换 10typedef char * String; 11String s1, s2;    // 等同于 char *s1; char *s2; 12 13#define String char *; 14String s1, s2;    // 等同于 char *s1; char s2;
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o