zoukankan      html  css  js  c++  java
  • 常量指针和指针常量

    http://note.youdao.com/yws/public/redirect/share?id=59efe4c935f3731fb0a59bf90fd7d91e&type=false

    [http://blog.csdn.net/beyond0525/article/details/7409305](http://blog.csdn.net/beyond0525/article/details/7409305 "常量指针和指针常量")


    ### 参考c++primer p110 *指针和const限定符*
    const和int的前后顺序不影响
    const int * p =int const *p


    和int* const p

    cons int *p const 在前 所以是常量指针

    常量指针p:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。 
    const int *p = (const int) * p p指针 指向 const int

    当然也可给其赋值非const int 的值的地址
    **const 这里修饰的int  而不是 p 可以通过 const int temp 给p 赋值,
    也可以int temp 给p 赋值,因为const 修饰的是指针,所示p的值可以改变**

    ```
    const int * p;
    int temp1=1;
    const int temp2=1;
    p=temp1;//ok
    p=temp2;//ok
    ```

    p是一个指针 指向的一个const int *

    所以 p可以指向 const int a ;也可以指向const  int b;
    就是p所指向的地址是可以改变的,但不可以通过 *P来改变这个指向的值。

    而int * const P 
    指针在前,所以是指针常量 
    const修饰p 这里p 是一个int * ,所p所指向的地址是不能改变的
    ![图片](http://i2.piimg.com/4851/cccec2e67e410e11.jpg)

    ```
    int a =3; 
    int b = 1; 
    int c = 2; 
    int const *p1 = &b;//const 在前,定义为常量指针 
    int *const p2 = &c;//*在前,定义为指针常量

    // p1 = &a是正确的,但 *p1 = a是错误的。
    // p2= &a是错误的,而*p2 = a 是正确的。

    //被常量指针修饰期间,该值不能被修改 
    /*如果p1被赋值了一个非const变量,那么不能通过p1来修改这个变量值,但可以通过其他方式来修改此
    变量的值,这是p1所指向的值会随之发生改变*/
    ```

  • 相关阅读:
    页面转表格并且下载
    关于表格导入
    C/C++作用域运算符::
    设计模式之观察者模式_C++
    C# 传不定参数
    C语言中的位域的使用
    C++/python求哈希值(SHA256)
    C++中纯虚函数
    类模板/函数模板实现父类指针指向子类对象(虚函数实现多态)
    Windows Socket 接口简介
  • 原文地址:https://www.cnblogs.com/jiudianren/p/5648335.html
Copyright © 2011-2022 走看看