菜鸟之路-06


 枚举的定义:

    语法:

      enum 枚举名{

 

       选项1,

       选项2,

       .....

       选项n

 

 

 

 

 

 };

 注意:选项之间用,隔开,最后一个不要加,并且大括号后面一定要加上;

 声明枚举变量

    语法:enum 枚举名 变量名;

   : enum caiquan q;

      q=石头;

 枚举的作用详细说明:

 

 1.枚举项是什么?

 就是一个整数,默认情况下,枚举项从0开始,然后依次递增

 所以注意:声明一个枚举类型的变量,就相当于声明一个int类型的变量

 例:enum quanHead q1;  相当于  int q1;

 

 2.枚举项可以指定起始的值,比如说,指定10以后,后面的就是111213…………

 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;

}



你可能感兴趣的:(菜鸟之路-06)