c语言之const和指针

作者: Lee_5566 | 来源:发表于2019-06-03 18:24 被阅读4次
    image.png

    const和指针

    区别方法:
    如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
    如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。

    常量指针

    const靠近数据类型,就是修饰该类型的变量为常量 .
    例:

    const int x=20;//定义int类型的符号常量x,x=20
    
    const int *p=&x;//定义指向常量的指针p,
    //可以改变指针的指向,但是不能通过指针来改变 x中的值
    
    指针常量

    const靠近指针,就是定义这个指针为常指针

    例:

    int * const p2=&x;//定义常指针p2,
    //不可改变指针的指向(常指针),但可以通过指针来修改x中的值
    
    相关的六种写法
     const int p;
     const int *p;
     int const* p;
     int * const p;
     const int * const p;
     int const * const p;
    

    验证代码

    #include <iostream>
    using namespace std;
     
    int main()
    {
        int x=10;
        int y=50;
        //左侧修饰变量不可变
        //指向常量的指针 
        const int *p=&x;
        cout<<"p="<<p<<" *p="<<*p<<endl;
    //  *p=20;//改变指针指向的变量,出错:error C2166: l-value specifies const object
        p=&y;//指针里面的值是可以变的。
        cout<<"p="<<p<<" *p="<<*p<<endl;
        //常指针
        int * const p2=&x;//const靠近指针p2修饰指针p2里面的地址值不可变,
        cout<<"p2="<<p2<<" *p2="<<*p2<<endl;
    //  p2=&y;//不能修改,常指针的指向 error C2166: l-value specifies const object
        *p2=30;//可以修改常指针指向的变量的值
        cout<<"p2="<<p2<<" *p2="<<*p2<<endl;
        
        //定义指向常量的常指针
        const int * const p3=&x;
        p3=&y;//不可以改变常指针的指向。
        *p3=100;//不可改变常指针指向的常量的值。
    //总结:
    //const靠近数据类型就是修把该类型的变量变成常量,
    //const靠近指针就是修饰把这个指针变成常指针
        return 0;
    }
    

    参考

    C++ const与指针的结合

    相关文章

      网友评论

        本文标题:c语言之const和指针

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