这里写目录标题
- Const和指针
- Const在C和C++中的区别
- Const与指针的关系
- 常变量与指针
- 同类型指针的赋值兼容规程
Const和指针
Const在C和C++中的区别
int main()
{
const int n=0;//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()
{
const int n=10;//C++语言中以常量为主。
int ar[n]={1,2,3,4};//ok;
int *p=(int *)&n;//
*p=100;
cout<<"n="<
Const与指针的关系
int main()
{
int a=0,b=10;
int *p1=&a; //普通指针
const int *p2=&a;//指向为常性(解引用为常性)
int const *p2=&a;
int * const p3=&a;//指针变量自身为常性
const int * const p4=&a; //指向(解引用)和指针变量自身都为常性
}
int main()
{
int a=0;
int *p1=&a; //ok;
const int *p2=&a; //ok;
int * const p3=&a; //ok;
const int * const p4=&a; //ok;
return 0;
}
//编译方式不同
常变量与指针
int main()
{
const int a=10;
int *p1=&a; //error;
const int *p2=&a; //ok;
int * const p3=&a; //error;
const int * const *p4=&a; //ok;
int *p5=(int*)&a; //ok 不安全
return 0;
}
同类型指针的赋值兼容规程
int main()
{
int a=10,b=20;
in *p=&a;
int *s1=p; //ok;
const int *s2=p; //ok;
int * const s3=p; //ok;
const int * const s4=p; //ok;
}
总结:能力强的指针赋值为能力收缩的指针
练习1
int main()
{
int a=10,b=20;
in *p=&a;
int *s1=p; //ok;
const int *s2=p; //ok;
int * const s3=p; //ok;
const int * const s4=p; //ok;
}
练习2
int main()
{
int a=10,b=20;
int * const 0=&a;
int *s1=p; //
const int *s2=p; //
int * const s3=p; //
const int * const s4=p; //
}