枚举、typedef关键字

  1)枚举类型介绍及定义

目前为止接触到的数据类型:

基本数据类型

指针类型

空类型 void

构造类型

数组、结构体

枚举类型

a、枚举类型

①枚举类型定义的一般形式:

enum 枚举类型名{

值1,

值2,

值n

};

在枚举值中应罗列出所有可用值。这些值也称为枚举单元。

枚举类型是一种基本类型,而不是一种构造类型,因为它不能再分解任何基本类型。。

②例如:定义一个枚举变量,保存一周天数

enum weekDay{

Sunday,

Monday,

Tuesday,

Wednesday,

Thursday,

Friday,

Saturday

};

关于枚举类型元素的命名习惯:

如下:k+枚举名+枚举值名

enum iColor{

kIcolorWhite,

kIcolorYello,

kIcolorBlack

};

  2)枚举变量的定义和使用

a、枚举类型的变量的定义

定义:

①先定义枚举类型,在定义枚举类型的变量

enum 枚举类型名 枚举变量名列表;

②定义枚举类型的同时,定义变量

enum Sex{kSexMan,kSexWomen,kSexYao} iSex;

b、枚举类型的初始化

①赋值:

enum Sex iSex;//定义枚举变量

iSex=kSexMan;//给枚举变量赋值

c、枚举变量的使用

printf(“%d\n”,iSex);

d、枚举变量的值

枚举的元素的值:第一个元素的值默认为0,一次递增+1;

如:

kSexMan=1,kSexWomen=2,kSexYao=3

enum Sex{kSexMan  ,kSexWomen  ,kSexYao};

注意:枚举类型定义以后,系统会自动给枚举的每个元素都会赋值一个整形的初值。

默认初值:从第一个元素开始值为0,以后每个元素的值,都是上一个元素的值+1

  3)typedef关键字介绍

回顾:之前学习的类型:

基本数据类型、空类型、构造类型、指针类型、定义类型

a、typedef关键字的概念及语法格式

①概念和语法

C语言不仅提供了丰富的数据类型,而且还允许有用户自己定义类型说明符,也就是说允许由用户为数据类型取“别名”。

一般形式:

typedef 原类型名 新类型名

其中原类型名种含有定义部分,新类型名一般用大写表示,以便区别。

有时也可用宏定义来代替typedef的功能,但是宏定义是由预处理来完成的,而typedef则是在编译时完成的,后者会更加灵活。

代码:

typedef int MALATANG;

MALATANG qiezi=3;

MALATANG *p=&qiezi;

printf(“%d\n”,qiezi);//输出3

printf(“%p\n”,*p);   //输出3

b、typedef的使用方法

①基本数据类型

代码:

typedef int MALATANG;

MALATANG qiezi=3;

MALATANG *p=&qiezi;

printf(“%d\n”,qiezi);//输出3

printf(“%p\n”,*p);   //输出3

②用在数组,给数组起别名

代码:

typedef int ARRAY[5];

ARRAY a1={1,2,3,4,5},b1={6,7,8,9,0};
–>//等价于int a1[5],b1[5];

for(int i=0;i<5;i++){

printf(“%d\t”,a1[i]);

}

③用在结构体、给结构体起别名

不起别名的用法:

struct Person {

char *name;

int age;

};

struct Person p1={“zhangsna”,16};

a)给结构体起个别名法一

//给struct Person 起个别名 P

typedef struct Person P;

p p2={“lisi”,18};

b)给结构体起个别名法二.

typedef struct Car{

int lun;

int speed;

}MYCAR;//表示把结构体起个别名 MYCAR

MYCAR car1={2,200};

c)给匿名的结构体起个别名

typedef struct{

int screenSize;

int ram;

}IPHONE;

//用新类型定义结构体变量

IPHONE iphone7={10,8};

④用在枚举类型上,给枚举类型起别名

a)typedef enum Sex{kSexMan,kSexWomen,kSexYao} ISEX;//ISEX是别名

b)typedef enum {

Sunday,

Monday,

Tuesday,

Wednesday,

Thursday,

Friday,

Saturday

}WEEKDAY;   //WEEKDAY是别名

c)typedef enum Sex S;//给枚举类型起个别名S

S s1,s2;

s1=kSexYao;

⑤给函数指针起别名

int sum(int a,int b){

return a+b;

}

int div(int a,int b){

return a-b;

}

//函数指针:指向函数的指针

int (*p)(int,int);//函数指针

typedef int (*FUN)(int,int);//FUN是一个别名

FUN f1,f2;

f1=sum;

printf(“%d\n”,f1(1,5));//输出结果为6

    原文作者:微观天下
    原文地址: https://blog.csdn.net/ITclody/article/details/46676643
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞