C语言— typedef语法
#include <stdio.h>
/*typedef 原有数据类型 新的数据类型;
1、别名的基础还可以再起别名
1、基本数据类型
2、结构体
3、枚举
4、指针
5、函数指针
*/
int sum(int num1,int num2)
{
return num1 + num2;
}
int minus(int num1,int num2)
{
return num1 - num2;
}
int average(int num1,int num2)
{
return sum(num1, num2) / 2;
}
//给函数指针类型其别名
typedef int (*MethodPointer)(int,int);
int main(int argc, const char * argv[])
{
//给函数指针起别名
// int (*methodPointer)(int,int);
//
// methodPointer = sum;
//
// int result = methodPointer(10,20);
// printf("result = %d\n",result);
//
// int (*minusPointer)(int,int);
// minusPointer = minus;
// minusPointer(20,10);
//
MethodPointer minu = minus;
int result = minu(20,10);
printf("result = %d\n",result);
return 0;
}
void testForPointer()
{
int a = 10;
typedef int * Int;
Int p;
p = &a;
printf("%d\n",*p);
}
/**
* 给枚举类型起别名
*/
void testForEnum()
{
//给枚举类型起别名
//先定义枚举类型,然后再起一个别名
/*
enum Sex{
Man,
Woman,
Other
};
enum Sex m = Man;
typedef enum Sex Sex1;
Sex1 s = Woman;
printf("%d\n",s);
*/
// 定义枚举类型的同时给它起一个别名
// typedef enum _Sex{
// Man,
// Woman,
// Other
// } Sex;
//
// Sex m = Other;
// 定义匿名枚举类的同时,给它起一个别名
typedef enum {
Man,
Woman,
Other
} Sex;
Sex m = Man;
}
/**
* 给结构体类型起一个别名
*/
void testForStruct()
{
// 先定义结构体,然后再给结构体起一个别名
struct Person{
int age;
char *name;
};
struct Person p = {10,"xiaoming"};
typedef struct Person PersonType;
PersonType pp = {20,"xiaoma"};
printf("age = %d,name = %s\n",pp.age,pp.name);
//定义结构体类型的同时,给它起一个别名
typedef struct _Point{
int x;
int y;
} Point;
Point point = {1,1};
//定义匿名的结构体类型的同时,起一个别名
typedef struct{
int width;
int height;
} Size;
Size size = {4,6};
}
//给基本数据类型起别名
void test()
{
typedef int Integer;
Integer num = 10;
printf("%d\n",num);
typedef Integer Int;
Int n = 20;
printf("%d\n",n);
}