您的位置:首页 > 其它

指针常量和常量指针详谈

2011-05-01 16:03 148 查看
 首先介绍一下:

   指针的值,是指指针变量内存空间中的值,在这里也就是一个地址。

   指针所指向地址的值,是指指针内存空间中的地址中的值。

   eg:int a=50;

        int *p=&a;

        这里指针的值为变量a的地址,即&a;而指针所指向的值是指变量a的地址中的值,也就是50;1:指针常量

      指针常量也就是所指针的值不变,也就是指向的地址不变。但所指向地址当中的值可以改变,也可通过解引用来改变它的值。

     eg:int a=50;

          int b=20;

          int *const p=&a;

          p=&b;//错误,p所指向的内存不能改变。

          *p=30;//可以,可以通过指针运算符来改变指针所指向空间中的值;

          a=40;//可以,指针所指向空间的值可以变。

2:常量指针

         常量指针指指向空间中的值是对于指针来说是个常量,也就是说不能通过解引用来改变其值。

   eg:int a=20;

        int b=30;

       const int *p=&a;//这里和int const *p=&a是一样的,同样是常量指针。

       p=&b;//可以

       *p=60;//不可以,不可以通过指针运算符来改变其值。

       b=50;//可以

 

总结:指针常量和常量指针区别在于一个指向的地址不可以改变,一个不可以通过指针运算符来改变指向空间中的值,但都可以通过指向空间的变量来改变其中的值

 

3:const int*const p

     这种形式是上面的指针常量和常量指针的综合体,也就是说其不能改变其指向空间的地址,也不能通过指针运算符来改变指向空间的值。

     eg:int a=10;

          int b=20;

         const int *const p=&a;

         p=&b;//错误

         *p=50;//错误

         a=40;//正确

        

 

 

 

 

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: