typedef 的详细用法

typedef :自定义一种数据类型
用法1:
代码:
定义一个基本的数据类型;
#include <stdio.h>
typedef char BYTE;//定义一个数据类型 BYTE ,BYTE 跟char 类型一样
int main()
{
	BYTE c = 'c';
	putc(c,stdout); //打印出char类型c
	return 0;
}
用法2:
定义一个指针类型:
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef char *CHARP; //定义一个char类型指针类型

CHARP stradd(CHARP s1, CHARP s2)
{
	strcat(s1, s2);
	return s1;
}

int main()
{
	char c = 'a';
	CHARP p = &c; //定义一个CHARP 类型指针 
	printf("p = %p\n", p);//结果:p = 00B5F8D7

	CHARP p1,p2; //定义两个指向 typedef的 CHARP类型 指针变量
	char s1[100] = "hello";
	char s2[100] = "world";
	p1 = s1;
	p2 = s2;
	CHARP s3= stradd(p1, p2);
	printf("s3 = %s\n", s3);//结果:helloworld
	return 0;
}

用法3:
定义一个数组类型:
代码:
#include <stdio.h>
typedef char BYTE[]  ; //定义一个字符串类型

int main()
{
	char c = 'a';
	BYTE s  = "helloworld";
	printf("s = %s\n", s);//结果:s = helloworld
	return 0;
}

用法4:
定义一个 结构体数据类型:
代码:
#include <stdio.h>
typedef struct
{
	int a;
} A;  // 定义一个结构体类型的数据类型

int main()
{
A a ;定义结构A变量a
a.a= 10;
printf("%d",a.a); // 结果:10
}

用法5:
定义一个指向 返回类型为char类型指针、参数为两个char类型指针函数的指针的类型
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef char *(*STRADD)(char *,char *); //定义一个指向 返回类型为char类型指针、参数为两个char类型指针函数的指针的类型 (本例中的stradd函数)

STRADD get_stradd() //定义一个返回类型的STRADD 类型的函数
{
	return stradd;
}

//定义一个返回类型为char类型指针、参数为两个char类型指针的函数
char *stradd(char *s1, char *s2)
{
	strcat(s1, s2);
	return s1;
}
// 定义一个参数类型有函数的的指针
char *test(STRADD p, char *s1, char *s2)
{
	return p(s1, s2);
}

int main()
{
	char s1[100] = "hello";
	char s2[100] = "world";
	char *s3= test(stradd,s1, s2);//测试test 函数,结果:s3 = helloworld
	printf("s3 = %s\n", s3);

	STRADD array[10]; //定义一个函数数组
	return 0;
}

typedef 对定义复杂的数据类型有着不可替代的作用,多用!!!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

crystalnsd

万水千山总是情,支持一下行不行

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

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

打赏作者

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

抵扣说明:

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

余额充值