编辑代码

#include <stdio.h>
int main () {
 
    int a1=10,a3=11;
    double a2=20.1;

    //-----可写3种,各不相同----//
    //写法1,指针指向类型的前面
    const int *p1=&a1;//只限定了int类型的指针,无限定其地址,可改指向的地址,但不能改指向地址里面的值
    p1=&a3;//可改变指针指向的地址
    //p1=&a2;//指针指向的类型不对,这里只能指向int类型的地址
    //*p1=1;//但不能改指向地址里面的值

    //写法2,指针符号的后面&指针名称的前面
    int *const p2=&a1;//只限定了地址,不能改指针指向的地址,除初始化外,不能改其地址,可改其指向地址的值
    //p2=&a3;//除初始化外,不能改其地址
    //p2=&a2;//指针指向的类型不对,这里只能指向int类型的地址
    *p2=2;//可改其指向地址的值

    //写法3,同时存在
    const int *const p3=&a1;//除初始化外,不能改地址和指向该地址的值
    //p3=&a2;//指针指向的类型不对,这里只能指向int类型的地址
    //p3=&a3;//除初始化外,不能改其地址
    //*p3=2;//但不能改指向地址里面的值




	return 0;
}