int * const 与 const int * 的区别

type * const 与 const type * 是在C/C++编程中特别容易混淆的两个知识点,现在就以 int * const 和 const int * 为例来简略介绍一下这两者之间的区别。

1.int * const 讲解 

   int a = 20;

   int * const b = &a;

   b代表一个指向a变量存储空间的int *常量指针,由于b是一个常量指针,因此其指针值无法改变,亦即无法指向其他的存储空间,但其指向的存储空间的值可以通过 *b = newValue / a = newValue 改变。

示例代码如下:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int a = 20;
 8     int * const b = &a;
 9     cout << *b << endl;
10     *b = 40;
11     cout << *b << endl;
12     int c = 60;
13     //b = &c; error
14     cout << *b << endl;
15     return 0;
16 }
View Code

2.const int * 讲解

   int a = 20;

   const int * b = &a;

   b代表一个指向 const int 存储空间的指针,b所指向的存储空间的数值不可以通过 *b = newValue 改变,但可以通过 a = newValue改变,b 也可以指向其他存储空间。

示例代码如下:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int a = 20;
 8     const int * b = &a;
 9     cout << *b << endl; // *b = 20
10     //*b = 20; error
11     a = 30;
12     cout << *b << endl; // *b = 30
13 
14     const int d = 55;
15     //int *e = &d; error
16     const int * e = &d;
17     cout << *e << endl; // *e = 55;
18     //d = 20; error
19     //*e = 30; error
20     return 0;
21 }
View Code

 

 

 

 

 

 

 

 

 

posted @ 2014-03-25 20:58  瓦尔登湖畔的小木屋  阅读(1017)  评论(0编辑  收藏  举报