//
// main.c
// 关键字_typedef
//
// Created by admin on 15/7/21.
// Copyright (c) 2015年 admin. All rights reserved.
//
#include <stdio.h>
void test();
/*
1. typedef 作用:
> 给已经存储的类型起一个新的名字(即:起别名)
使用场合:> 基本数据类型
> 指针 //给指针区别名和其他类型不同
> 结构体
> 枚举
> 指向函数指针
注意:> 与宏有些差异,它本身是一种存储类型的关键字,与auto、extern、mutanle、static、register
等关键字不能出现在同一个表达式中
> 如果要用其它的名称来标识一个现有的类型,用typedef 不要用#define
> 宏是替换,typedef是给现有的类型取个别名
*/
/*
2. 给基本数据类型 起别名
> 格式:typedef 基本数据类型 别名
*/
typedef int myInt; // 给int类型起别名为myInt
typedef char myChar;
typedef double myDouble;
// 可以给别名再起别名
typedef myChar youChar;
/*
3. 给指针 起别名
注意:> 给指针起别名和其他数据类型不同
格式:> 指向函数的指针: typedef 函数类型 (*指针名)() // 其中指针名就是新的类型名称,即别名
> 指向结构体的指针: typedef 结构体类型 *指针名
*/
void test()
{
printf("这是个测试函数!");
}
// 给指向函数的指针 起别名
typedef void (*point1)(); // 指针别名为 point1 实际: point1 == void (*p)*()
/*
4. 给结构体类型 起别名
格式:> typedef 结构体类型名称 别名
说明:> 定义结构体类型有3种方式,因此起别名也有3中方式,如下:
*/
// 4.1 先定义结构体,再起别名
struct Person
{
char *name;
int age;
};
typedef struct Person myPerson; // 给结构体Person起别名为myPerson
// 4.2 定义结构体的同时 起别名
struct Person1
{
char *name;
int age;
} myPerson1; // 给结构体Person1起别名为myPerson1
// 4.3 定义匿名结构体,并同时给这个结构体起别名
struct
{
char *name;
int age;
} myPerson3; // 给这个匿名结构体起别名为myPerson3,以后可以通过别名调用这个结构体
/*
4. 给枚举类型 起别名
格式:> typedef 枚举类型名称 别名
说明:> 定义枚举类型有3种方式,因此起别名也有3中方式,如下:
*/
// 4.1 先定义枚举类型,再起别名
enum Sex
{
man,
woman,
no
};
typedef enum Sex mySex;
// 4.2 定义枚举类型的同时,起别名
enum Sex1
{
man1,
woman1,
no1
} mySex1;
// 4.3 定义匿名枚举类型的同时,起别名
enum
{
man2,
woman2,
no2
} mySex2; // 可以根据此 别名引用匿名枚举类型
int main(int argc, const char * argv[]) {
return 0;
}
// main.c
// 关键字_typedef
//
// Created by admin on 15/7/21.
// Copyright (c) 2015年 admin. All rights reserved.
//
#include <stdio.h>
void test();
/*
1. typedef 作用:
> 给已经存储的类型起一个新的名字(即:起别名)
使用场合:> 基本数据类型
> 指针 //给指针区别名和其他类型不同
> 结构体
> 枚举
> 指向函数指针
注意:> 与宏有些差异,它本身是一种存储类型的关键字,与auto、extern、mutanle、static、register
等关键字不能出现在同一个表达式中
> 如果要用其它的名称来标识一个现有的类型,用typedef 不要用#define
> 宏是替换,typedef是给现有的类型取个别名
*/
/*
2. 给基本数据类型 起别名
> 格式:typedef 基本数据类型 别名
*/
typedef int myInt; // 给int类型起别名为myInt
typedef char myChar;
typedef double myDouble;
// 可以给别名再起别名
typedef myChar youChar;
/*
3. 给指针 起别名
注意:> 给指针起别名和其他数据类型不同
格式:> 指向函数的指针: typedef 函数类型 (*指针名)() // 其中指针名就是新的类型名称,即别名
> 指向结构体的指针: typedef 结构体类型 *指针名
*/
void test()
{
printf("这是个测试函数!");
}
// 给指向函数的指针 起别名
typedef void (*point1)(); // 指针别名为 point1 实际: point1 == void (*p)*()
/*
4. 给结构体类型 起别名
格式:> typedef 结构体类型名称 别名
说明:> 定义结构体类型有3种方式,因此起别名也有3中方式,如下:
*/
// 4.1 先定义结构体,再起别名
struct Person
{
char *name;
int age;
};
typedef struct Person myPerson; // 给结构体Person起别名为myPerson
// 4.2 定义结构体的同时 起别名
struct Person1
{
char *name;
int age;
} myPerson1; // 给结构体Person1起别名为myPerson1
// 4.3 定义匿名结构体,并同时给这个结构体起别名
struct
{
char *name;
int age;
} myPerson3; // 给这个匿名结构体起别名为myPerson3,以后可以通过别名调用这个结构体
/*
4. 给枚举类型 起别名
格式:> typedef 枚举类型名称 别名
说明:> 定义枚举类型有3种方式,因此起别名也有3中方式,如下:
*/
// 4.1 先定义枚举类型,再起别名
enum Sex
{
man,
woman,
no
};
typedef enum Sex mySex;
// 4.2 定义枚举类型的同时,起别名
enum Sex1
{
man1,
woman1,
no1
} mySex1;
// 4.3 定义匿名枚举类型的同时,起别名
enum
{
man2,
woman2,
no2
} mySex2; // 可以根据此 别名引用匿名枚举类型
int main(int argc, const char * argv[]) {
return 0;
}