const 和指针
1、const 在C和C++中的区别
int main()
{
const int n = 10;
int ar[n] = {1,2};
int *p = (int*) &n;
*p = 100;
printf("%n = %d *p = %d \n",n,*p);
return 0;
}
int main()
{
const int n = 10;
int ar[n] = {1,2,3,4};
int *p = (int*) &n;
*p = 100;
cout<<"n "<<"*p ="<<*p<<endl;
return 0;
}
2、const和指针的关系
int main()
{
int a = 10, b = 10;
int *p1 = &a;
const int *p2 = &a;
int const *p2 = &a;
int * const p3 = &a;
const int * const p4 = &a;
}
3、常变量与指针
int main()
{
const int a = 10;
int *p1 = &a;
const int *p2 = &a;
int *const p3 = &a;
const int *const *p4 = &a;
int *p5 = (int*) &a;
return 0;
}
4、同类型指针的赋值兼容规程
int main()
{
int a = 10,b = 20;
int *p = &a;
int *s1 = p;
const int *s2 = p;
int *const s3 = p;
const int *const s4 = p;
return 0;
}
5、练习
int main()
{
int a = 10;
int b = 20;
const int *p = &a;
int *s1 = p;
const int *s2 = p;
int *const s3 = p;
const int8 const s4 = p;
}
p 可以指向任何地址,但是不可以通过 *p 改变 a 的值,s1、 s3可以改变 a 的值,不可以通过 s2 、s4改变a 的值。
int main()
{
int a = 10;
int b = 20;
int const *p = &a;
int *s1 = p;
const int *s2 = p;
int *const s3 = p;
const int8 const s4 = p;
}
对于指针p,它只能指向a的地址,可以改变 a 的值,对于s1,s2,s3,s4他们可以去指向a的地址,也可以去指向a的地址,但是不管它们指向谁的地址,都不能改变p的指向,所以能力没有被扩展,因此都正确
总结:能力强的指针赋值给能力收缩的指针
|