您的位置:首页 > 其它

指针运算、指针函数、函数指针、结构体指针以及枚举的介绍

2015-10-27 23:06 218 查看
指针运算:

   1.指针与整数的运算:

                    a.指针与整数的运算只能加减,不能乘除取余

                    b.指针与整数的运算得到的结果还是指针(地址)

 

            公式: 指针 + n = 指针 + n * 指向的类型所占的字节数

 

                         指针 - n = 指针 - n *   指向的类型所占的字节数

 

                         如果有一个int类型指针p,地址为0x11,那么p + 2得到的结果0x19

 

            作用:遍历数组

 

                     int nums[] = {10,21,13};

                     

                      //正序

                     int *p = &nums[0];

                     

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

                     

                         *(p+i);

                     }

                     

                     //逆序

                     p = &nums[2];

                     

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

                     

                         *(p-i);

                     }

 

 

        2.指针与指针的运算:

                    a.指针与指针的运算只能做减法,不能加、乘、除、取余

                    b.指针与指针的运算得到的结果是long

                    c.指针与指针的减法只能是同类型之间运算

 

            公式: 指针 - 指针 = (指针存的地址 - 指针存的地址) / 指向的类型所占的字节数

 

 

            作用:算出两个元素之间相差几个位置

 

 

 

 指针函数:

           就是指针的函数,本质上是一个函数。它是一个返回值类型是指针的函数

 

           语法: 类型* 函数名(参数列表){

           函数体;

            }

           C语言中只能返回字符串常量、全局变量以及静态变量

 

 

 

 函数指针:

        

   就是函数的指针,本质上是一个指针。它是一个指向函数的指针。

           函数指针可以认为就是函数名;

 

 

    语法: 返回值类型  (*指针变量名)(参数列表);

 

        赋值:

            指针变量名 = 函数名;

 

 

    例:

         void (*pTest)();

         

         pTest = test; //pTest是指针变量名,test是函数名,函数名就是一个地址

 

请注意!这里的test没有括号,如果加了括号test()就等于是执行了这个函数 而不是将该函数赋给指针变量名了。

 

 枚举:

    定义语法:

            enum 枚举名{

 

                枚举项1,

                枚举项2,

                …………

                枚举项n

            };

 

        注意:1.枚举本质是整数

 

             2.枚举项不能重名

        

             3.枚举值默认从0开始,依次递增

 

             4.枚举值可以重复,并且也可以手动改变原来的默认值,改完后它后面的也依次递增

 

 

 

 结构体指针:

        声明语法:

                struct 结构体名  * 指针变量名;

 

            赋值:

                指针变量名  =  &结构体变量;

 

  例:      struct Person *ppt; //结构体指针

 

                 struct Person p; //结构体变量

 

                 ppt = &p;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: