指针

1.格式:指针类型 *指针变量

注意:1.指针变量本身的数据类型是unsigned long int(4字节);指针类型是指向的变量的类型

2.*是指针指示符,不是运算符

例子:int *pi; float *pf;

int指pi指向的数据是int型;float指pf指向的数据是float型;但是pi和pf都是unsigned long int类型

对指针应用的例子:

   inta =10;

    int*p = &a;

     printf("%i\n",*p);

    a =11;

     printf("%i\n",*p);

输出:10

11

2.指针的运算:

指针的加减:指针加上或减去一个整数n代表指针从当前位置前或后移动sizeof(数据类型)长度的存储单元

例子:

  inta =10;

 int*p = &a;

printf("%p\n",p+1);

输出:0x7fff5fbff6cc

0x7fff5fbff6d0

同理两个指针相减代表两个指针减有多少个数据

3.二级指针

代表指向指针的指针;

  int*p = &a;

    int**pp = &p;

    int*** ppp = &pp;

p = 0x7fff5fbff6cc; pp = 0x7fff5fbff6c0; ppp=0x7fff5fbff6b8

*pp = p; *ppp=pp;

4.指针和函数

指针函数:int* f(x,y);  返回值是个指针是int *类型

函数指针:void(*fptr)();指针是指向函数的指针变量

使用:

void func(){  //注意 可以使用func()或者(*func)();调用

    std::cout << "Hello, World!\n";

}

int main(int argc,const char* argv[]) {

   void (*fptr)(); //fptr的格式是:void(*)()类型

   fptr = &func;

    //调用方式

     (*fptr)();  //或者fptr()

    /*oc转换成c++代码使用函数指针的方式是

    void* fptr = (void*)func;

    ((void(*)())fptr)();

    */

    return 0;

}

你可能感兴趣的:(指针)