一、const通常用来定义只读变量,这个变量的之只能在初始化时赋值,若是初始化时没有赋值,则默认为0。若是在其余地方试图更改此值,编译会报错。如:spa
1 #include<stdio.h> 2 int main() 3 { 4 const int a; 5 a+=2; 6 printf("%d\n",a); 7 return 0; 8 9 } 10 11 12 运行结果: 13 con.c: In function ‘main’: 14 con.c:5:3: error: assignment of read-only variable ‘a’ 15 a+=2;
二、const 和指针指针
const和指针有如下几种书写方式:
指针指向的内容不可变,但指针能够改变code
#include<stdio.h>
int main()
{
int w=1;
int q=2;
const int *a=w;
a=&q;
++a;
++*a;
printf("%d/n",*a);
}
运行结果:blog
con1.c: In function ‘main’:
con1.c:10:9: error: increment of read-only location ‘*a’
++*a;rem
指针指向的内容不可变,指针能够改变。io
1 #include<stdio.h> 2 3 int main() 4 { 5 int w=1; 6 int q=2; 7 int const *a=q; 8 a=&w; 9 // int *const a=&w; 10 // const* int a; 11 // const int *a; 12 13 ++a; 14 ++*a; 15 16 }
运行结果:编译
con1.c: In function ‘main’: con1.c:14:2: error: increment of read-only location ‘*a’ ++*a; ^
const修饰了a, a自己是一个常量,而a仍是一个指针,结果就是一个指针常量,指针不可变,但指针内容可变。
function
#include<stdio.h> int main() { int w=1; int q=2; int *const a=&w; ++a; ++*a; }
运行结果:class
con1.c: In function ‘main’:
con1.c:8:9: error: increment of read-only variable ‘a’
++a;变量