C Abstract——const

来源:互联网 发布:tushare 数据不全 编辑:程序博客网 时间:2024/06/06 13:22

const关键字是一个用来限定变量不被修改的修饰符,在一定程度上可以提高程序的安全性和可靠性。


1)int *const p

const修饰p,故而直接对p进行赋值修改是非法的,p只能指向初始化地址,修改p指向的内容是合法的。

    #include <stdio.h>      #include <stdlib.h>      int main(int argc, char* argv[])       {          int a=1;          int b=2;          int *const p=&a;          printf("p address %x, p value is %d.\n", p, *p);          *p=b;//p=&b是非法的,因为p的地址不能被改变          printf("p address %x, p value is %d.\n", p, *p);      }

2)int const *p

const修饰的对象是p指向的内容,所以对*P的赋值是非法的,但通过修改p指向的地址是允许的。

    #include <stdio.h>      #include <stdlib.h>      int main(int argc, char* argv[])       {          int a=1;          int b=2;          int const *p;          p=&a;//*p=a是非法的          printf("p address %x, p value is %d.\n", p, *p);          p=&b;          printf("p address %x, p value is %d.\n", p, *p);      } 

3)int const* const p

const同时修改了p和p指向的内容,所以p和*p在初始化时就被确定了,任何赋值都是非法的。

    #include <stdio.h>      #include <stdlib.h>      int main(int argc, char* argv[])       {          int a=1;          int b=2;          int const *const p=&a;//必须在声明时初始化          printf("p address %x, p value is %d.\n", p, *p);      } 


0 0