const指针与指向const类型的指针

来源:互联网 发布:windows phone软件下载 编辑:程序博客网 时间:2024/05/23 01:15

    首先,我也不知道这个标题提到的两个名词叫的对不对,不过暂时先这么叫吧。这里的const指针我指的是类似于int *const p这样声明的变量,指向const类型的指针是类似于const int* p这样声明的变量。
    然后再说一下两者的区别吧。前一种,指针指向的内容可以通过指针变量改变,但是指针变量本身的值不能被改变;后一种,指针指向的内容不可以通过指针变量改变,但是指针变量本身的值可以改变。此外要说明的是,const int* p 可以指向非const类型的变量,而const类型的变量一定要用const int* 来指向。
    最后给出测试的代码:

#include <iostream>using namespace std;int main(){    int i = 10, j = 100;    const int *p1 = &i;    int *const p2 = &i;    //通过指针改变所指对象的值    //*p1 = 1; error C3892: “p1”: 不能给常量赋值    *p2 = 1;    cout<<i<<endl;    //改变指针变量的值    p1 = &j;    //p2 = &j; error C3892: “p2”: 不能给常量赋值    cout<<*p1<<endl;    system("PAUSE");    return 0;}

    此外,我之所以能够知道这两者的区别是因为看了这篇博客,特此声明。

0 0