C++的typedef

typedef
typedef为一个已有的类型定义一个新的名字
typedef 类型 新名字

typedef int feel
//这会告诉编译器feel是int的另一个名称
#include <iostream>
using namespace std;

int main () {
	typedef int feel;
	feel a = 10;
	printf("%d", a);
}

3 typedef与#define
两者的区别如下:

#define进行简单的进行字符串替换。
#define宏定义可以使用#ifdef、#ifndef等来进行逻辑判断,还可以使用#undef来取消定义。

typedef是为一个类型起新名字。

typedef符合(C语言)范围规则,使用typedef定义的变量类型,其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。通常,使用typedef要比使用#define要好,特别是在有指针的场合里。

1 首先:
在C中定义一个结构体类型要用typedef:

typedef struct Student
{
    int a;
}Stu;

于是在声明变量的时候就可:Stu stu1;
如果没有typedef就必须用struct Student stu1;来声明
这里的Stu实际上就是struct Student的别名。
另外这里也可以不写Student(于是也不能struct Student stu1;了)

typedef struct
{
    int a;
}Stu;
但在c++里很简单,直接
struct Student
{
    int a;
};

如果我们想声明一个含5个int元素的一维数组,一般会这么写:int a[5];

如果我们想声明多个含5个int元素的一维数组,一般会这么写:int a1[5], a2[5], a3[5]···,或者 a[N][5]

可见,对于定义多个一维数组,写起来略显复杂,这时,我们就应该把数组定义为一个类型,例如:

typedef int arr_t[5];//定义了一个数组类型arr_t,该类型的变量是个数组。

typedef int arr_t[5];
int main(void)
{
    arr_t d;        //d是个数组,这一行等价于:  int d[5];
    arr_t b1, b2, b3;//b1, b2, b3都是数组
    
    d[0] = 1;
    d[1] = 2;
    d[4] = 134;
    d[5] = 253;//编译警告:下标越界
}

Typedef 与 #define宏的区别
首先,在举例子之前,先回顾一个小知识:

int* a,b;//在这里,不符合我们的意图,它只声明了一个指向整型的指针a和
//一个整型变量b
typedef int* PINT;
PINT a,b ;//此时,a,b都为指向整型的指针变量

相比起宏定义的直接替换,typedef是对类型的封装

#define PINT int*
PINT b,c;//相当于 int* b,c;只有b为指针,c为整型变量

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值