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

    1、常量指针(指针可改,指针指向的对象不可改)

    常量指针本质是指针,用const修饰它,表示这个指针乃是一个指向常量的指针。指针指向的对象是常量,那么这个对象不能被更改。

    表示方法:

    const int * ptr

    int const * ptr

     

    int a = 5;

    const int* c = &a; //合法

    *c = 6; //非法

     

    char *str1, *str2;

    str1 = "abcde1234";

    str2 = "bcde";

    int strcmp(const char *str1, const char *str2); //表示在该函数里不会对形参的字符串内容进行修改

     

    2、指针常量(指针不可改,指针指向的对象可改)

    变量能修改,常量不可修改。所以指针变量能改指向,指针常量不能改指向。

    (1)指针常量的本质是一个常量,而用指针修饰它,那么说明这个常量的内容应该是一个指针。另外,数组名是一个指针常量。

    表示方法:

    int* const ptr

     

    (2)因为指针常量是一个常量,在声明的时候一定要给它赋初始值。一旦赋值,以后这个常量再也不能指向别的地址。

     

    (3)指针常量的值是指针,这个值因为是常量,所以不能被赋值。

    int a;

    int* const p = &a; //初始化指针常量

    int* q;

    p = q; //非法,把上面的const去掉就合法了

     

     

    (4)虽然指针常量的值不能变,可是它指向的对象是可变的,因为我们并没有限制它指向的对象是常量。

    int a = 100;

    int* const p = &a; //初始化指针常量

    *p = 50; //合法

     

    3、指向常量的指针常量(指针不可改,指针指向的对象也不可改)

    指向常量的指针常量就是一个常量,且它指向的对象也是一个常量。

    表示方法:

    const int * const ptr

    int const * const ptr

     

    因为是一个指针常量,那么它指向的对象当然是一个指针对象,而它又指向常量,说明它指向的对象不能变化。

    const int a = 25;

    const int * const b = &a; //初始化

    *b = 50; //非法

    int * p;

    b = p; //非法

     

    4、一个例子

    比如:

    int a[10];

    a++; //出错,不可修改,因为a是指针常量

     

    转自:http://www.cnblogs.com/xiaozhihong/p/9536522.html

  • 相关阅读:
    已知二叉树的前序遍历、中序遍历,求后序遍历
    排序算法
    应用层
    运输层
    mysql分页查询
    mysql 性能分析及explain用法
    数据库SQL优化
    MATLAB GUI设计(1)
    路径选择
    Python itchat库(1)
  • 原文地址:https://www.cnblogs.com/huangzs/p/9648181.html
Copyright © 2011-2022 走看看