美文网首页
const修饰指针变量

const修饰指针变量

作者: NullUser | 来源:发表于2021-01-16 11:21 被阅读0次

    const修饰指针有两种情况,

    情况一:是const修饰后无法改变指针所指向地址的内容,但指针可以指向其它地址,即指针自身可以被改变。
    int a = 1;
    int b = 2;
    const int *pa = &a;
    *pa = 3;  //报错
    pa = &b;
    

    指针pa指向了变量a的地址,指针自身的值此时等于a的地址,此时的const写法,const int pa = &a;表示pa指向的a的地址所存放的值无法修改,所以*pa=3;在试图通过pa修改a的值时,会报错,而pa=&b改变的是指针pa的值,所以不会报错。

    情况二:另一种是无法修改指针所指向地址,即指针自身不能被改变,但可以修改所指向地址的内容。
    int a = 1;
    int b = 2;
    int * const pa = &a;
    *pa = 3;
    pa = &b; //报错
    

    指针pa指向了变量a的地址,指针自身的值此时等于a的地址,此时的const写法,int * const pa = &a;const修饰指针自身,pa自身的值无法修改,所以**pa=3;在试图通过pa修改a的值时,不会报错,而pa=&b改变的是指针pa的值,所以会报错。

    const修饰指针

    int a = 1;
    int b = 2;
    const int * const pa = &a;
    *pa = 3;  //报错
    pa = &b; //报错
    

    此时指针自身的值无法改变,指针指向的地址的内容也无法改变。
    *pa=3;和pa=&b;在试图通过指针pa修改a的值和pa自身的值时都会报错。

    相关文章

      网友评论

          本文标题:const修饰指针变量

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