const 在c和c++ 中的区别
int main()
{
const int n = 10;//c语言中以变量为主。
int ar[n] = {1,2};//error
int *p = (int *)&n;
*p = 100;
printf("%n = %d *p = %d n",n,*p);
return 0;
}
int main(0
{
const int n = 10;// c++ 语言中以常量为主
int ar[n] = {1,2,3,4};//ok;
int *p = 100;
count << "n = " << "*p" <<*p <<endl;
return 0;
}
const与指针的关系
int mian()
{
int a = 10, b = 10;
int *p1 = &a; //普通指针
// *p1 = 100 ; a= 100; p1 = &a;
const int *p2 = &a; //指向为常性(解引用为常性)/const在*左边,修饰指向能力
int const *p2 = &a;
// *p2 = 100;//error;
//p2 = &b;
int * const p3 = &a; //指针变量自身为常性
//*p3 = 100;
//p3 = &b;// error;
const int * const p4 = &a;// 指向(解引用)和指针变量自身都为常性
同类型指针的赋值兼容规则
int main()
{
int a = 10;
const int *s = &a;
int *p1 = s; //error *s *p1;
const int *p2 = s;
int * const p3 = s; //error *p3 =100;
const int * const p4 = s;
return 0;
}
能力强的指针赋值给能力收缩的指针
int main()
{
int a =10, b = 10;
int* const s = &a;
int *p1 = s; // ok
const int *p2 = s;//ok
int * const p3 = s;//ok
const int *const p4 = s;//ok
return 0;
}