typedef的用法简介

作用

typedef是C语言的一个重要的关键字,是为数据类型的定义一个新的名字。也就是类型的别名。

下面我们直接先上例子吧
例: 定义一个int 型变量,并对其赋值,输出变量的值

 #include<stdio.h>
 int main(void)
 {
	int a = 10;
	printf("a = %d", a);
	return 0;
 }

如果我想使A代表int类型呢?也就是A是int的别名

#include<stdio.h>
typedef int A;
int main(void)
{
	A a = 10;
	printf("a = %d", a);
	return 0;
}

那么,问题来了,typedef的这种行为和我们之前学习的#define宏定义有什么区别呢?

Typedef 与 #define宏的区别

首先,在举例子之前,先回顾一个小知识:

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

那么我们如何使 b也成为整型指针

typedef int* PINT;
PINT a,b ;//此时,a,b都为指向整型的指针变量

下面感受一下这个例子:

#include <stdio.h>
typedef int INT;
typedef int* PINT;
int main()
{
	INT a = 10;
	PINT b, c;//b,c都为指向整型的指针
	b = &a;//b指向a
	c = b;//c 也指向a
	printf("addr of a = %p\n", c);//打印a的地址
	return 0;
}

那么,使用#define宏是否也可以实现?

#include <stdio.h>
typedef int INT;
#define PINT int*//此处不加;初学者往往容易出错
int main()
{
	INT a = 10;
	PINT b, c;//
	b = &a;
	c = b;
	printf("addr of a = %p\n", c);//打印 a 的地址
	return 0;
}

此时,编译器报错,原因是:

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

故,当打印地址时,出现错误

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

typedef与结构体的配合

=等待更新=====

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值