zoukankan      html  css  js  c++  java
  • 指针常量和常量指针的区别

    1、指针常量——指针类型的常量

    在指针常量中,指针自身的值是一个常量,指针变量不允许修改。如同次指针指向一个地址该地址不能被修改,但是该地址里的内容可以被修改定义格式如下:

    int *const a=5;
    或
    int a,b;
    int * const p=&a ;
    p=&b;//操作错误

    例: 

    #include <iostream>
    using namespace std;
    int main()
    {
        int a = 3;
        int m[2] = { 1, 2 };
        int *const c = &a;//指针常量
        cout << "c的地址:" << c << "c的值:" << *c << endl;
        c[0]=m[0];//改变地址的内容是合法的
        cout << "c的地址:" << c << "c的值:" << *c << endl;
    }    

     地址没有改变,内容可以改变,输出如下:

    2、常量指针——指向“常量”的指针 

    常量指针本质上是一个指针,常量表示指针指向的内容,说明该指针指向一个“常量”。在常量指针中,指针指向的内容是不可改变的,指针看起来好像指向了一个常量。

    int a = 1, b = 2;
    const int *p = &a;//等价于int const*p=&a;
    p = &b; // 指针可以指向其他地址,地址可以改变,内容不可改变

    例:

    #include <iostream>
    using namespace std;
    int main()
    {
        int a = 3;
        int m[6] = {0,2,3,6,9,5};
        int const *c = &a;//const int*c = &a;常量指针
        cout << "c的地址:" << c << "   "<<"c的值:" << *c << endl;
        c = &m[3];//可以改变指向地址,不能改变内容(*c=m[3]操作错误)
        cout << "c的地址:" << c << "   " << "c的值:" << *c << endl;
    }
        

     运行结果如下:

     

  • 相关阅读:
    JavaEE三层架构
    请求重定向
    响应的中文乱码问题
    Apache的ServerAlias的作用
    bootstrap 常用class
    linux 退出当前命令的编辑
    硬链接和软链接
    ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for key ‘PRIMARY’
    ie浏览器许多图片放在一起会有间隙
    Could not initialize class utils.JdbcUtils
  • 原文地址:https://www.cnblogs.com/hsy1941/p/10506758.html
Copyright © 2011-2022 走看看