(1).c文件与.cpp文件中const的区别
我们先引用两个大致相同的代码段:
c文件中:
C++文件中:
可以看到两段近似相同的代码竟然出现了不同的输出。 他们的主要区别如下,这就可以解释为什么C++文件中打印的值为10了。
(2)c++文件中const与指针的联合使用
int main()
{
int a = 10;
int b = 20;
const int *p1 = &a;
p1 = &b;
*p1 = 30;//error
int const *p2 = &a;
p2 = &b;
*p2 = 40;//error
int * const p3 = &a;
p3 = &b;//error
*p3 = 50;
}
const会修饰离const最近的一个类型,所以结果这三行代码的修饰类型和修饰内容如下:
(3)最后引入一个例题:与const搭配的指针之间的互相赋值
int main()
{
int a;
int *p1 = &a;
const int *p2 = &a;
int * const p3 = &a;
int *q1 = &a;
const int * q2 = &a;
int * const q3 = &a;
p1 = q1;
p1 = q2;//error *q2不能改变,若赋值给p1,则可以同*p1改变
p1 = q3;
p2 = q1;
p2 = q2;
p2 = q3;
p3 = q1;//error p3不可以改变
p3 = q2;//error 这三个都是将指针,赋值给了为常量的指针p3
p3 = q3;//error
}