美文网首页
指针与const(此节只适用于C99)

指针与const(此节只适用于C99)

作者: 爱生活_更爱挺自己 | 来源:发表于2020-07-02 22:09 被阅读0次

    指针与const(此节只适用于C99)

    指针 是const

    • 表示一旦得到了某个变量的地址,不能指向其他变量
      • int *const q = &i;//q是const
      • *q = 26;//OK
      • q++; //ERROR

    所指是const

    • 表示不能通过这个指针去修改那个变量(并不是使得那个变量成为const)
      • const int *p = &i;
      • p = 26; //ERROR! (p)是const
      • i=26;//OK
      • p=&j;//OK

    判断以下这些是什么意思?

    int i;

    const int* p1 = &i;

    int const* p2 = &i;

    int *const p3 = &i;

    判断那个被const了的标志是const在*的前面还是后面

    转换

    • 总是可以把一个非const的值转换成const的

      void f(const int* x);

      int a = 15;

      f(&a);//OK

      const int b = 1;

    ​ f(&b);//OK

    ​ b = a + 1;//ERROR!

    • 当要传递的参数的类型比地址大的时候,这是常用的手段:既能用比较少的字节数传递值给参数,又能避免函数对外面的变量的修改

    const 数组

    • const int a[] = {1,2,3,4,5,6,};
    • 数组变量已经是const的指针了,这里的const标明数组的每个单元都是const int
    • 所以必须通过初始化进行赋值

    相关文章

      网友评论

          本文标题:指针与const(此节只适用于C99)

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