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

指针与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
  • 所以必须通过初始化进行赋值
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。