chenpingjun1990

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 22 文章 :: 5 评论 :: 0 Trackbacks
      这个问题我一直很纠结,大一学C语言的时候就没明白过。后来就不记得什么时候就理解了。
去年给大一的同学做C语言助教的时候,认真看了相关的内容,给同学讲并且在幻灯片上演示过,当时特别
清楚。今天突然又遇到了这个问题,觉得又有点模糊了,很是纠结,上网搜了一下相关内容,自己又写了几
行代码验证相关内容。以求记忆深刻,以后还是记不清上自己blog看看也方便。

     先根据我个人的理解说一下这个指针常量与常量指针:
     常量指针:中心词是指针,表示这是一个指向常量的指针,所指向的内容是不能改变的,这个指针是能改变的,
它可以指向其它的变量。定义常量指针的方式:
const int *ptr; or int const *b;
     以上两种定义方式是同一个意思。
     指针常量:中心词是常量,就是这个指针是个常量,是不能改变的,但是指针所指向的值是可以改变的。
 定义指针常量的方式:
int* const ptr;
      需要注意的是,在定义指针常量的时候,必须对指针进行初始化,以上只是为了表示一些定义方式。
常量指针可以不必初始化。
   
      下面我将贴上我的代码:
 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main(int argc, char* argv[])
 5 {
 6   /*constant pointer */
 7   const int a = 5;
 8   const int *= &a;
 9   // *b = 7;
10   const int c = 7;
11   b = &c;
12   cout << *<< endl;
13 
14   /* pointer constant */
15   int m = 5;
16   int *const n = &m;
17   int p = 7;
18   //  n = &p;
19
20   *= 3;
21   cout << *<< endl;
22   
23   return 0;
24 }
     请先看代码的6-12行,7-8行定义了一个常量a以及一个常量指针b并且指向a. 第9行是注释的,因为修改常量
指针所指向的内容是illegal的。而在11行中,改变了这个指针所指向的变量,因为这个是常量指针,指针的值是可以
改变的。所以在12行中输出的是c的值,即为7.
     看14-21行,15-16行定义了变量m以及一个指针常量n,即这个指针是个常量,不能修改的。17-18行想让指针
常量指向p,这是不合法的。而在20行中改变n所指向的内容的值,这是可以的。第21行输出3.
posted on 2012-02-28 16:11 万川先生 阅读(205) 评论(0)  编辑 收藏 引用 所属分类: Cplusplus