枚举的定义:
语法:
enum 枚举名{
选项1,
选项2,
.....
选项n
};
注意:选项之间用,隔开,最后一个不要加,并且大括号后面一定要加上;
声明枚举变量
语法:enum 枚举名 变量名;
例: enum caiquan q;
q=石头;
枚举的作用详细说明:
1.枚举项是什么?
就是一个整数,默认情况下,枚举项从0开始,然后依次递增
所以注意:声明一个枚举类型的变量,就相当于声明一个int类型的变量
例:enum quanHead q1; 相当于 int q1;
2.枚举项可以指定起始的值,比如说,指定10以后,后面的就是11,12,13…………
enum direction{
up = 10, //10
down, //11
left, //12
right //13
};
注意:指定起始值的“ = 数据” 写在,前面
3.枚举项的值可以随意指定,只不过它后面的值如果没有指定的话,会在它的值的基础上依次递增
例:
enum direction{
up = 10, //10
down, //11
left=30, //30
right //31
};
4.枚举项的值不能指定为小数,否则报错
5.枚举项的值可以重复
例:
enum direction{
up = 10, //10
down, //11
left=11, //11
right //12
};
6.枚举项不能重复
例:
enum direction{
up = 10, //10
down, //11
left=11, //11
up, //报错
right //12
};
7.枚举的作用:方便程序员看懂源代码
8.不能直接输出枚举项
9.枚举变量可以赋任意的整数值,为什么??因为枚举变量就是int变量
B.指针的运算
指针只能做加减,不能乘除,取余。
0x7fff5fbff7bc p
0x7fff5fbff7c0 p+1*sizeof(int ) 加是类型的字节数 指针跟整数相加 结果是个地址
0x7fff5fbff7b8 p2
p-p2=1 {(p-p2)/sizeof(int)}
指针只能跟自己类型相同的运算。
作用:利用指针来遍历数组。
#include
enum caiquan{
剪刀,
石头, //注意:枚举项里可以写中文,也可以写英文,但是推荐写英文
布
};
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
return 0;
}
1)指针函数:就是函数的返回值是个指针的时候,就叫指针函数
语法:类型 * 函数名(参数列表){ //类型是:类型 * (*号可以放在两者之间的任何位置)
函数体;
}
作用:只能返回全局变量或者返回字符串常量,还可以返回静态变量的地址
局部变量:是放在内存中的栈区,出了作用域就会被回收。
2)函数指针的介绍:
函数的指针,就是一个指针。指向函数的指针,就是一个函数的指针。
语法:返回值类型(*指针变量)(参数列表);例 代码块
3)结构体指针:指向结构体变量的指针叫结构体指针。
struct 结构体名称 *指针变量名
例 struct Person *p 类型:struct Person p:指针变量的变量名
#include
void test(){
printf("你好\n");
}
int test1(int num1,int num2){
return num1+num2;
}
//以下是结构体指针
typedef struct {
char name[50];
int age;
}Person;
int main(int argc, const char * argv[]) {
void (*ptest)()=test;//无返回值 无参数的指针函数 test后面千万不能加上()
(*ptest)();
int (*p1test1)(int ,int )=test1; //有参有返回值的指针函数
//(*p1test1)(23,32); (1)两种不同使用指针的方法
// p1test1(23,32); (2)
printf("%d\n",p1test1(23,32));
//以下是结构体指针
Person p={"毛毛",12};
Person pArr[5];
pArr[5]=(Person){{"毛毛",12},{"毛毛",12}}; //里面{}是个pArr[5]的数组 所以要加{}
pArr[0] =(Person){"毛毛"};
Person *pp;
pp=&p;
*pp=p;//这里可以看出*pp=p
printf("age=%d\n",pp->age); //这是取值的两种方法
printf("age=%d\n",(*pp).age);
//看赋值两种方法
(*pp).age=18;
printf("age=%d\n",(*pp).age);
pp->age=10;
printf("age=%d\n",pp->age);
return 0;
}