const关键词

来源:互联网 时间:1970-01-01

c语言中,const修饰的变量是不变的可以看做是常变量,例如:#include <stdio.h>

int main(){ int i=10;
int arr[i];
return 0;
}
显示错误,因为数组的大小不确定。而下面一个例子就是对的,
#include <stdio.h>
int main()
{const int i=10;
int arr[i];
return 0;
}
const修饰的是不可改变的变量,所以上述中的i不能作为左值。
然后看一个稍微复杂的例子。
    const int* p;
    还是先去掉const 修饰符号。
    注意,下面两个是等价的。
    int* p;
    int *p;
    其实我们想要说的是,*p是int类型。那么显然,p就是指向int的指针。
    同理
    const int* p;
    其实等价于
    const int (*p);
    int const (*p);
    即,*p是常量。也就是说,p指向的数据是常量。
    于是
    p+=3; //合法
    *p=3; //非法,p指向的数据是常量。
    那么如何声明一个自身是常量指针呢?方法是让const尽可能的靠近p;
    int* const p;
    const右面只有p,显然,它修饰的是p,说明p不可被更改。然后把const去掉,可以看出p是一个指向 int形式变量的指针。
    于是
    p+=3; //非法
    *p=3; //合法
    再看一个更复杂的例子,它是上面二者的综合
    const int* const p;
    说明p自己是常量,且p指向的变量也是常量。
    于是
    p+=3; //非法
    *p=3; //非法
    const 还有一个作用就是用于修饰常量静态字符串
const char *p="wet"



相关阅读:
Top