设为首页 加入收藏

TOP

浅谈常量指针与指针常量(五)
2014-07-19 22:53:02 来源: 作者: 【 】 浏览:200
Tags:常量 指针

 

  最后总结两句:

  1) 如果const 修饰在*pi前则不能改的是*pi(即不能类似这样:*pi=50;赋值)而不是指pi.

  2) 如果const 是直接写在pi前则pi不能改(即不能类似这样:pi=&i;赋值)。

  补充三种情况。

  这里,我再补充以下三种情况。其实只要上面的语义搞清楚了,这三种情况也就已经被包含了。不过作为三种具体的形式,我还是简单提一下吧!

  情况一:int * pi指针指向const int i常量的情况

  //**********begin*****************

  const int i1=40;//定义了一个整型常量i1。

  int *pi; //定义了一个指针pi。

  pi=&i1;//这样可以吗 不行,VC下是编译错。

  //const int 类型的i1的地址是不能赋值给指向int 类型地址的指针pi的。否则pi岂不是能修改i1的值了吗!

  pi=(int* ) &i1; // 这样可以吗 强制类型转换可是C所支持的。

  //VC下编译通过,但是仍不能通过*pi=80来修改i1的值。去试试吧!看看具体的怎样。

  //***********end***************

  情况二:const int * pi指针指向const int i1的情况

  //*********begin****************

  const int i1=40;

  const int * pi;//定义常量指针

  pi=&i1;//两个类型相同,可以这样赋值。很显然,i1的值无论是通过pi还是i1都不能修改的。

  //*********end*****************

  情况三:用const int * const pi申明的指针

  //***********begin****************

  int i

  const int * const pi=&i;//你能想象pi能够作什么操作吗 pi值不能改,也不能通过pi修改i的值。因为不管是*pi还是pi都是const的。

  //************end****************

      

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇利用栈实现队列(C语言实现) 下一篇C语言指针讲解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)
·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)