typedef声明的使用

typedef是一种常见的替换类型名称的东西

例如

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
int main()
{
    LL a;
    return 0;
}

在一个typedef中,我们需要知道两个问题。我们要换的是什么?我们换成了什么?

判断的方式很简单

typedef <…> <换成的东西>
最后换成的东西必须是一个单词(中间不能有空格)
所以不管一个typedef后面怎么复杂,最后换成的一定是这句话最后的一个单词,
而这个单词前面的全都是需要替换的内容。

例如
typedef abc d e f g h i j…k l m n
这个typedef就是把 abc d e f g h i j…k l m用一个n来代替。

这也是为什么typedef long long LL;是long long 用LL代替 ,而不是long用long LL代替的原因。

所以typedef的使用还是非常简单的,只需要记住最后一个单词代表前面所有内容即可。

我们需要特别注意一个用法
结构体的typedef

如果我们在定义完结构体之后还要定义这个类型的变量
我们通常是这样

#include <bits/stdc++.h>

using namespace std;
struct student
{
    char name[25];
    int score;
};
int main()
{
    struct student stu[100];
    return 0;
}

struct student****写起来非常麻烦
所以我们可以用到typedef

#include <bits/stdc++.h>

using namespace std;
typedef struct student
{
    char name[25];
    int score;
}STU;// 千万别以为是定义了一个STU的student类型变量(不加typedef才是这个意思)
int main()
{
    STU stu[100];
    return 0;
}

在这里,我们把typedef我们常见的形式
typedef struct student{char name[25];int score;} STU;

是不是很熟悉呢,
我们看最后一项 STU(不一定必须用空格隔开,是最后一项内容即可) ,它就是我们需要替换成的东西,
那原体是什么呢?就是前面的struct student(大括号里的东西就是student的具体内容)。
所以我们就相当于用STU代表struct student,这样也就可以理解为什么我们可以写 STU stu[100];了吧

发布了44 篇原创文章 · 获赞 13 · 访问量 2346

猜你喜欢

转载自blog.csdn.net/NEFU_kadia/article/details/104167305