C语言菜鸟入门·各种typedef用法超详细解析

目录

1.  什么是typedef

2.  typedef的用法

2.1  对于数据类型的重定义

2.2  对于函数的重定义

2.3  对于指针的重定义

2.4  对于数组指针的重定义

2.5  对于指针数组的重定义

2.6  对于结构体的重定义(typedef struct)

2.6.1  对结构体起别名

2.6.2  对结构体指针起别名

2.6.3  汇总

2.7  对于共用体的重定义(typedef union)

2.8  对于枚举变量的重定义(typedef enum)


1.  什么是typedef

        typedef是 C 和 C++ 语言中的一个关键字,用于为已有的数据类型定义新的名称(别名)。它的主要作用是增强代码的可读性和可维护性,使得程序员可以更方便地使用复杂数据类型或者简化长类型名的书写。

简化复杂类型名称: 使用typedef可以将复杂的类型名简化为一个更简单的别名,提高代码的可读性。

跨平台开发: 在跨平台开发中,typedef可以帮助隐藏不同平台下的类型差异,提高代码的可移植性。

模块化设计: 有助于将数据类型的定义和使用分离开来,使程序更易于维护和修改。

2.  typedef的用法

2.1  对于数据类型的重定义

        使用 typedef 定义类型名后,原类型名作用不变,我们可以通过typedef对基本数据而理性进行重定义例如:

typedef int i;
typedef char ch;
typedef long long int lli;

        这样我们在后续使用这些数据类型时可以这样写:

i a = 5;
lli b = 10;
ch c = 'a';

        他们等价于:

int a = 5;
long long int b = 10;
char c = 'a';

2.2  对于函数的重定义

        typedef定义了OperationFunc类型,它表示一个函数指针,可以指向接受两个整数参数并返回整数的函数。这样,使用OperationFunc类型来声明函数指针变量op,可以避免每次声明函数指针时都需要写出完整的指针语法:

#include <stdio.h>

// 定义一个函数指针类型,用 typedef 简化声明
typedef int (*OperationFunc)(int, int);

// 定义两个函数,用于加法和乘法
int add(int a, int b) {
    return a + b;
}

int multiply(int a, int b) {
    return a * b;
}

int main() {
    int result;
    OperationFunc op; // 使用 typedef 后的函数指针类型

    op = add; // 将函数指针指向加法函数
    result = op(3, 4); // 调用加法函数
    printf("3 + 4 = %d\n", result);

    op = multiply; // 将函数指针指向乘法函数
    result = op(3, 4); // 调用乘法函数
    printf("3 * 4 = %d\n", result);

    return 0;
}

        注意,typedef并不用于定义函数本身,而是用于定义类型别名,包括指向函数的指针类型。因此,你不能使用typedef来为函数本身提供别名,例如这样是不合法的:

typedef int myFunction(int); // 错误,不能给函数本身起别名

2.3  对于指针的重定义

typedef int* PTRINT;

        以上就是给int* 起了一个新的名字PTRINT。可定义int类型指针变量如:

PTRINT x;

        其等价于:

int* x

实际代码使用: 

#include<stdio.h>

typedef int* PTRINT;

int main()
{
	int a = 0;

	PTRINT b = &a;
	int* c = &a;

	printf("a:%d\na:%p\n", a, &a);
	printf("b:%d\nb:%p\n", *b, b);
	printf("c:%d\nc:%p\n", *c, c);

	return 0;
}</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值