------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
// 枚举
枚举类型
用来把所有的可能的值都列举出来
枚举类型的作用:
把某个变量的取值,限定在一定范围之内
枚举类型的定义:
enum 枚举类型名{ 枚举值列表};
注意:
1> 枚举类型不是构造类型(它的元素值,都是int类型),因为他得
每个元素不能再分解为其它的基本数据类型数据
2> 枚举值: 标示符
3> 枚举类型也分为:全局的和局部的
举例:
enum weekday{zhoyi,zhouer,zhoushan,zhousi,zhouwu
zhouliu,zhouri};
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 定义了一个星期的枚举类型
enum weekday{zhoyi,zhouer,zhoushan,zhousi,zhouwu
zhouliu,zhouri};
return 0;
}
枚举变量:
用枚举类型定义的变量,就事枚举变量
枚举变量的定义方法:
1> 定义枚举类型的时候,定义变量
enum sex{kSexMan,kSexWomen,kSexYao} isex;
enum {kSexMan,kSexWomen,kSexYao} sex;
2>先定义枚举类型,再定义变量
枚举变量的初始化和使用
enum sex s1;// s1的取值被限定了范围,
//只能取kSexMan,kSexWomen,kSexYao其中一个
关于枚举类型的值的问题
1> 默认值
枚举类型,一旦定义,系统会默认的给枚举类型的每个元素一个初始值
// 0 1 2
enum sex{kSexMan,kSexWomen,kSexYao};
// 0 1 2 3 4 5 6
enum weekday{zhouyi,zhouer,zhousan,zhousi=8,zhouwu,zhouliu,zhouri};
2>可以给枚举类型的元素,指定初始值
*/
#include <stdio.h>
int main(){
//枚举变量定义方式一
enum sex{kSexMan,kSexWomen,kSexYao} isex;
//枚举变量定义方式二
//enum {kSexMan,kSexWomen,kSexYao} sex;
//枚举变量定义方式三
enum sex s1,s2;//定义一个枚举类型的变量,变量名为s1,s2
//这是给枚举变量赋值,注意:枚举变量只能被赋值枚举类型中定义的某个值
s1 = kSexMan;
printf("%d\n",s1);
//定义一个新的枚举类型
// 0 1 2 8 9 10 11
enum weekday{zhouyi,zhouer,zhousan,zhousi=8,zhouwu,zhouliu,zhouri};
enum weekday day;
day = zhousi;
printf("day = %d\n",day); //8
printf("xxxx = %d\n",zhousan); //2
printf("%d\n",zhouwu); //9
return 0;
}
typedef 是一个关键字,定义类型
定义类型:
给一个已经存在的类型,起个别名 (外号)
定义类型的使用
格式: typedef 原类型 新类型(别名)
*/
#include <stdio.h>
void test1(){
//1>给基本数据类型起别名
//int ---> AV
typedef int AV;
//用新的定义变量
// num==AV
AV num = 18;
printf("%d\n",num);
}
void test2(){
//给数组起别名
int a[5];
//给int类型 长度为5 的数组起个别名
typedef int ARRAY[5];
//使用ARRAY定义了两个长度为5 并且是整形数组,数组名分别是a1,a2;
ARRAY a1={ 1,2,3,4,5},a2;
printf("%p,%p\n",a1,a2);
//对数组变量
for(int i =0;i<5;i++){
printf("%d\n",a1[i]);
}
}
void test3(){
//给结构体起别名
//形式一: 可以理解为把struct Student 给起个别名 STU
typedef struct Student{
int age;
int no;
}STU;
//使用STU定义结构体变量
//STU等价与struct Student
STU stu1 = { 18,100};
STU *pstu = &stu1;
printf("%d,%d\n",pstu->age,pstu->no);
//形式二:
typedef struct {
int age;
int no;
}STU1;
STU1 s1 = { 12,3};
//形式三:
typedef struct Student SS;
SS s2={ 22,4};
}
void test4(){
//给枚举类型起别名
typedef enum sex{kSexMan,kSexWomen,kSexYao} ISEX;
//使用别名,定义枚举变量
ISEX s1 =kSexMan;
//第二种形式
//给匿名的枚举类型起别名
typedef enum {kColorYellow,kColorBlack,kColorTHJ} ICOLOR;
ICOLOR color = kColorTHJ;
printf("color:%d\n",kColorTHJ);
//第三种形式
typedef enum sex SS;
SS s2 = kSexYao;
printf("sex:%d\n",s2);
}
int sum(int a,int b){
return a+b;
}
int main(int argc, const char * argv[]) {
//给函数指针起别名
//使用函数名直接调用函数
int m = sum(10,20);
//定义函数指针
//int (*psum)(int ,int )
int (*psum)(int a,int b);
//把函数的首地址赋值给psum
psum = sum;
m = (*psum)(80,20);
//这是给函数指针起别名,别名是P
//可以使用P定义函数指针变量,函数指针变量只能指向
//返回int ,有两个int类型参数的函数
typedef int (*P)(int,int);
//p1是一个函数指针变量
P p1,p2,p3;
p1 = sum;
m = (*p1)(100,20);
printf("%d\n",m);
return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/35309.html