0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言关键字--typedef

1598007124 ? 来源:1598007124 ? 作者:1598007124 ? 2024-10-07 12:44 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

typedef 简介:

是 GNU C(GNU 编译器集合中的 C 语言编译器)提供的一种特性,它允许程序员为现有的数据类型定义一个新的名字。这使得代码更加清晰和易于理解。typedef 可以用来获取变量的类型或者表达式的类型,然后为这个类型定义一个新的类型名。

例如,如果有一个复杂的数据类型,如结构体,程序员可以使用 typedef 来简化这个类型的名称:

typedef struct 
{
	int x;	//声明结构体成员x
    int y;	//声明结构体成员y
}Point;		//声明一个结构体

Point _intStruct;//定义一个结构体_intStruct
int main()
{
	_intStruct.x = 9;	//将9赋值给结构成员x
	_intStruct.y = 10;	//将10赋值给结构成员y
	
	return 0;
}

在这个例子中,Point 现在是一个新定义的类型名,代表了一个包含两个整数 x 和 y 的结构体。之后在代码中就可以使用 Point 来代替原来的复杂类型定义。

2.在 C 语言中,typedef 关键字用于为类型创建一个新的名字,这使得代码更加清晰和易于维护。以下是 typedef 的一些常见用法:

提高代码可读性:为类型定义一个更具描述性的名字。

#include 

// 使用typedef提高可读性
typedef unsigned long ulong;

int main() 
{
    ulong value = 1234567890;
    printf("Value: %lun", value);
    return 0;
}

类型封装:在库或API中隐藏实现细节。

#include 

// 封装类型
typedef struct 
{
    int *array;
    size_t size;
} IntArray;

IntArray createIntArray(size_t size) 
{
    IntArray arr;
    arr.array = (int *)malloc(size * sizeof(int));
    arr.size = size;
    return arr;
}

void freeIntArray(IntArray arr) 
{
    free(arr.array);
}

int main() 
{
    IntArray myArray = createIntArray(10);
    for (size_t i = 0; i < myArray.size; i++) 
    {
        myArray.array[i] = i;
    }

    for (size_t i = 0; i < myArray.size; i++) 
    {
        printf("%d ", myArray.array[i]);
    }
    printf("n");

    freeIntArray(myArray);
    return 0;
}

类型封装:为函数指针定义别名

#include 

// 定义函数类型
typedef int (*CompareFunc)(const void *, const void *);

// 比较函数
int compareInts(const void *a, const void *b) 
{
    int arg1 = *(const int *)a;
    int arg2 = *(const int *)b;
    return (arg1 > arg2) - (arg1 < arg2);
}

int main() 
{
    int numbers[] = { 5, 3, 9, 1, 6 };
    int n = sizeof(numbers) / sizeof(numbers[0]);
    qsort(numbers, n, sizeof(int), compareInts);

    for (int i = 0; i < n; i++) 
    {
        printf("%d ", numbers[i]);
    }
    printf("n");
    return 0;
}

类型封装:为数组类型定义别名

#include 

// 定义数组类型
typedef int IntArray[10];

int main() 
{
    IntArray arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    for (int i = 0; i < 10; i++) 
    {
        printf("%d ", arr[i]);
    }
    printf("n");
    return 0;
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7633

    浏览量

    142173
  • typedef
    +关注

    关注

    0

    文章

    26

    浏览量

    9732
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    micro 关键字搜索全覆盖商品,并通过 API 接口提供实时数据

    micro 关键字搜索全覆盖商品”并通过 API 接口提供实时数据
    的头像 发表于 07-13 10:13 ?267次阅读

    《ESP32S3 Arduino开发指南》第三章 C/C++语言基础

    用的数据类型及其取值范围如表3.1.1所示。类型关键字(简写)占用内存取值范围 短整型int16_t(short)2节-32768 ~ 32767 无符号短整型uint16_t(unsigned
    发表于 06-10 09:20

    深入理解C语言C语言循环控制

    C语言编程中,循环结构是至关重要的,它可以让程序重复执行特定的代码块,从而提高编程效率。然而,为了避免程序进入无限循环,C语言提供了多种循环控制语句,如break、continue和
    的头像 发表于 04-29 18:49 ?1250次阅读
    深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:<b class='flag-5'>C</b><b class='flag-5'>语言</b>循环控制

    static在单片机中的妙用

    不要从字面意思误以为关键字 static 很安静,其实它一点都不安静。这个关键字C 语言里主要有两个作用,下面我们就来介绍一下 C
    发表于 04-02 13:50 ?1次下载

    单片机编程关键字之volatile

    volatile 修饰的变量是说这变量可能会被意想不到地改变。通常对于程序员而言,单片机 中用的就算常见了volatile 是易变的,不稳定的意思。其实对于很多人来说,根本没见过这个关键字,不 知道
    发表于 04-02 13:47 ?2次下载

    带你在单片机编程中熟练使用const(可下载)

    C 语言关键字中 const 举足轻重,我们今天就深度聊一聊 const 的定义和实际应用,让它 不再是迷C 语言中 const
    发表于 04-01 14:18 ?2次下载

    EE-62:在C语言中访问短内存

    电子发烧友网站提供《EE-62:在C语言中访问短内存.pdf》资料免费下载
    发表于 01-07 14:02 ?0次下载
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>语言</b>中访问短<b class='flag-5'>字</b>内存

    C语言关键字分别发生在哪个阶段

    以下C语言关键字,分别发生在哪个阶段? 第一个,define。 首先得纠正一下,define 并不是C语言里面的
    的头像 发表于 11-24 10:31 ?648次阅读

    C++新手容易犯的十个编程错误

    简单的总结一下?C++ 新手容易犯的一些编程错误,给新人们提供一个参考。 1 有些关键字在 cpp 文件中多写了 对于 C++ 类,一些关键字只要写在 .h 中就好,cpp 中就不用再
    的头像 发表于 11-15 12:42 ?1064次阅读

    C语言与Java语言的对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对C
    的头像 发表于 10-29 17:31 ?1152次阅读

    基于ArkTS语言的OpenHarmony APP应用开发:HelloOpenharmony

    console.log(typeof data); // number 3.2.2、number TypeScript 提供了 number 关键字来表示数字类型,它是双精度 64 位浮点值,既可以表示整数
    发表于 09-14 12:47

    使用边缘AI和Sitara处理器进行关键字检测

    电子发烧友网站提供《使用边缘AI和Sitara处理器进行关键字检测.pdf》资料免费下载
    发表于 09-02 11:30 ?0次下载
    使用边缘AI和Sitara处理器进行<b class='flag-5'>关键字</b>检测

    typedef和struct有啥区别

    C语言中, typedef 和 struct 是两个非常重要的关键字,它们在定义数据结构时扮演着关键的角色。然而,它们之间有一些明显的区别
    的头像 发表于 08-20 11:00 ?2620次阅读

    typedef struct和直接struct的区别

    C语言中, typedef 和 struct 是两种不同的关键字,它们在定义和使用上有着明显的区别。 typedef struct 和直接
    的头像 发表于 08-20 10:58 ?3681次阅读

    鸿蒙原生应用元服务开发-仓颉基本概念标识符

    在仓颉编程语言中,开发者可以给一些程序元素命名,这些名字也被称为“标识符”,标识符分为普通标识符和原始标识符两类,它们分别遵从不同的命名规则。 普通标识符不能和仓颉关键字相同,可以取自以下两类字符
    发表于 08-06 17:37