常量与指针

来源:互联网 发布:淘宝可以寄海外 编辑:程序博客网 时间:2024/05/01 21:16

一、指向常量的指针

int a = 10;const int b = 20;int *pi = &a;//指向非常量的指针const int *pci = &b;//或者int const *pci;

       此时pci被定义为指向整数常量,我们不同修改指针指向的值,但可以修改指针的值,比如:

       pci = &a;是正确的,这里pci被修改了,指向一个非常量的值,同时pci还可以被修改指向其他的整型常量;

       但是,*pci = 100;是错误的,因为不允许修改指针引用的值。

       另外,虽然我们不能修改指针指向的值,但是却可以读取它,printf("%d\n",*pci);//10

二、指向非常量的常量指针      

int c = 2;int *const cpi = &c;
       *cpi = 6;//正确的,指针指向的数据可以被修改

       int n = 10;cpi = &n;//错误,指针不能被修改

       const int m = 10;cpi = &m;//错误,必须被初始化为指向非常量

三、指向常量的常量指针(用的很少)

int d = 8;const int e = 13;const int *const cpci = &e;
       指向常量的常量指针必须进行初始化,不初始化会报错;

       cpci = &d;//错误,因为指针不能被修改

       *cpci = 4;//错误,因为不能修改指针指向的值

四、指向‘指向常量的常量指针’的指针

const int num = 200;const int *const cpci = #const int *const *pcpci = &cpci;
        printf("%d\n",*cpci);//200

        printf("%d\n",**pcpci);//200
最后,有一个解读指针声明的好办法:倒着读,即从后往前解读,会加速理解,可以试一试。

         

       

       
 

       

       

0 0
原创粉丝点击