C++指针

作者: 带着面包去流浪 | 来源:发表于2018-11-12 15:40 被阅读10次

    指针:

    指针:指针是一个其值为地址的变量,本质是一个地址。(就是一个存储地址的变量)

    声明:指向地址的数据类型 * 指针变量名;(创建的指针可以初始化也可以不初始化)

    (只要是出现了星号,而不管中间是不是有空格,我们便认为,这算是创建了一个指针变量. 如:int* a; int * n; int *b;均为指针)

    解除:对于一个指针变量p,*p表示解除引用,将其应用于指针,可以得到该地址存储的值。且这个值就是常规的值。

    比如:

    int a = 12;

    int *p;

    p = &a;

    cout<<"普通int类型:"<<a<<endl;  //普通int类型:12

    cout<<"指针类型:"<<p<<endl;    //指针类型:005DFBE8

    cout<<"解除指针类型(接触后为普通int类型):"<<*p<<endl; //解除指针类型(接触后为普通int类型):12

    1、指针的类型:

    从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:

    如:int *p; //指针的类型是int *

    2、指针所指向的类型:

    从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。

    如:int *p; //指针所指向的类型是int 

    3、指针的值

    指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。

    指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。

    我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。

    4、指针本身所占据的内存区

    指针本身占了多大的内存可用函数sizeof(指针的类型)得到。在32位平台里,指针本身占据了4个字节的长度。

    int a = 12;

    int *p;

    p = &a;

    cout<<sizeof(&a)<<endl; //4

    char b;

    cout<<sizeof(&b)<<endl; //4

    &(取址运算符)和*(间接访问运算符/解引用指针)

    &运算符:当它后面跟一个变量名的时候,给出这个变量名的地址.

    int a = 12;

    int *p;

    p = &a;

    cout<<&a<<endl;  //00D4FAAC

    printf("%p\n", p);  // //00D4FAAC    指针%p

    *运算符:后面跟一个指针的时候,得到指针指向的内存中的内容.

    int a = 12;

    int *p;

    p = &a;

    cout<<&a<<endl;  //00D4FAAC

    cout << *&a << endl; //12

    printf("%d\n", *p);  //12   

    参考:

    深度长文教你彻底掌握C++/C指针(一):基石

    C++指针详解

    相关文章

      网友评论

        本文标题:C++指针

        本文链接:https://www.haomeiwen.com/subject/aqccfqtx.html