| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2392 人关注过本帖, 1 人收藏
标题:指针常量和常量指针的一些整理
取消只看楼主 加入收藏
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:2 
指针常量和常量指针的一些整理
近来学习指针,碰到一个关于指针常量和常量指针的问题,之前被弄得是稀里糊

涂的,今天特意查资料整理了一下,现拿出来和大家分享,有什么弄错的地方请

大家不吝赐教,共同进步。

首先常量指针,咱们可以这样理解,常量指针即是一个指向常量的指针,既然指

向的是一个常量,那它所指向的值当然就不能变了。但是它本身的值,即它的地

址是可以变的,咱们可以把它指向别的地址。

而指针常量,则可以理解为一个常量,什么时候常量??指针常量,即指针是常

量,则它的地址是不可变的,但是它所指向的地址里的值是可以变的。

一个int型的常量指针是这样定义的:int const* 指针名。int const(常量)*(

指针)指针名
一个int型的指针常量是这样定义的:int* const 指针名。int*(指针) const(常

量)指针名
观察上面两个的定义我们是不是可以根据*和const的位置来一眼判断是一个指针

常量还是一个常量指针呢???*前const后是指针常量,const前*后是常量指针!!

!呵呵,当然最重要的还是要理解它们所代表的含义,哪个能改,哪个不能!

现在可以通过下面的一段代码再来看看自们理解的怎么样了。试试看下面的代码

哪里有问题,为什么!

#include<stdio.h>
int main(){
  int i=0;
  int j=1;
  int x;
  const int * pi=&i;
  *pi=22;
  pi=&j;
  int * const pj=&j;
  *pj=22;
  pj=&i;
  const int * px=&x;
  const int h=2;
  const int* ph=&h;
  int* const ph2=&h;
}
搜索更多相关主题的帖子: 资料 
2012-07-21 10:26
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:0 
呵呵,下面是我的理解。

#include<stdio.h>
int main(){
  int i=0;
  int j=1;
  int x;
  const int * pi=&i;//定义一个常量指针pi,它指向的地址是i
  *pi=22;//有问题了,pi是一个常量指针,它指向的地址的值你竟敢改
  pi=&j;//没问题,pi虽然指向的是一个常量,但本身还是自由的,还是可以改

变的
  int * const pj=&j;//这里定义一个指针常量,指向的是j的地址。
  *pj=22;//没问题,指针常量只是指针是个常量,地址是常量,但我里面的内容

可以变啊,好歹也有点自由啊
  pj=&i;//这里就不对了,既然是个常量就乖乖地别换地址
  const int * px=&x;//这里也没问题,可能就有人会有疑问了,你px不是一个

常量指针吗,你不是说常量指针是一个指向常量的指针吗,x又不是一个常量,杂

就可以呢?呵呵,这个是我之前有疑问,后来我把px所指向的值输出来,然后再

试图给px赋值,但不行,x已经被赋上了一个垃圾值。
所以说的常量指针是一个指向常量的指针这仅仅是便于我们理解,事实上它还是

可以指向一个变量的,不过一旦定义后该变量也就成了一个不变的量了。
  const int h=2;
  int* const ph2=&h;//有问题,我上面定义了h是一个常量,你怎么可以用一个

指针变量来指向h呢。若是可以的话,你指针常不是可以修改所指向地址的内容,

那不意味着可以修改h的值了,可h是个常量,怎么能让你这么做!!!
  const int* ph=&h;//所以还是用常量指针吧,指向的地址的值不变。
}

这是我个人查资料后的一些总结,在此写出来既是一种小结,也是一种分享,呵

呵。有不对的地方还望大侠指教,我好及时更正。

贵在坚持!
2012-07-21 10:26
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:0 
回复 5楼 pangding
恩恩,谢谢分享

贵在坚持!
2012-07-21 13:58
快速回复:指针常量和常量指针的一些整理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044647 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved