高级语言中的关键字:const用法分析
发布日期:2021-06-30 21:33:32 浏览次数:4 分类:技术文章

本文共 1828 字,大约阅读时间需要 6 分钟。

  const是constant的缩写,本意是“不变的、不易改变的”,它属于c、c++、Java等高级语言中的关键字,通常用来修饰变量对象、函数参数、c或c++指针对象使用。

 const在实际编程中起着至关重要的作用,本文主要讲解它在编程中的不同含义。

章节预览:

章节内容:

1. 变量修饰

  【例1】 int const a;

      示例代码

          int const a = 5;

          int b = a; //正确
          b = 6; //正确
          a = 6; //错误
          const int *p = &a; //正确
          *p = 6; //错误
          p = 0; //正确

      示例分析

  • 定义一个int类型常量a,a的值为5;
  • 定义一个int类型b,b初始化赋值为a;
  • b赋值为6;
  • a赋值出错,a的值不允许修改;
  • 定义一个int类型常量指针p,并指向常量a的地址;
  • p指向的内存赋值出错,a的值不允许修改;
  • p地址赋空地址,a的地址不变。

      示例概况

  • 定义(类型 + const + 对象)形式,必须初始化赋值;
  • 对象在生命周期内不允许赋值,即对象值不允许修改;

      示例相似情况

  • (int const a)、(const int a)都属于常量对象,所表达的含义相同。

2. 指针修饰

  【例2】 const int *p;

      示例代码

          const int *p;

          int a = 5, b = 6;
          p = &a; //正确
          *p = 6; //错误
          p = &b; //正确
          *p = 7; //错误

      示例分析

  • 定义一个常量int类型指针p;
  • 定义一个int类型a,初始化赋值为5;
  • 定义一个int类型b,初始化赋值为6;
  • p地址赋变量a的地址;
  • p指向的内存赋值出错,a的值不允许修改;
  • p地址赋变量b的地址;
  • p指向的内存赋值出错,b的值不允许修改;

      示例概况

  • 定义(const + 类型 + *(*在定义处表示指针声明,*的数量表示指针的维数) + 对象)形式,允许不进行初始化赋值;
  • 指针对象在生命周期内允许赋地址,即对象地址允许修改;
  • 指针对象在生命周期内不允许赋值,即对象值不允许修改;

      示例相似情况

  • (const int *p)、(int const *p) 、(const int const *p)都属于常量指针,所表达的含义相同。

  【例3】 int * const p;

      示例代码

          int a = 5, b = 6;

          int * const p = &a;
          *p = 6; //正确
          p = &b; //错误

      示例分析

  • 定义一个int类型a,初始化赋值为5;
  • 定义一个int类型b,初始化赋值为6;
  • 定义一个int类型指针常量p,并指向变量a的地址;
  • p指向的内存赋值为6,即a的值为6;
  • p地址赋变量b的地址出错,p的地址不允许修改;

      示例概况

  • 定义(类型 + * + const + 对象)形式,必须初始化赋值;
  • 指针对象在生命周期内允许赋值,即对象值允许修改;
  • 指针对象在生命周期内不允许赋地址,即对象地址不允许修改;

      示例相似情况

  • (int * const p)属于指针常量,只有这一种定义形式。

 【例4】 const int * const p;

      示例代码

          int a = 5, b = 6;

          const int * const p = &a;
          *p = 6; //错误
          p = &b; //错误

      示例分析

  • 定义一个int类型a,初始化赋值为5;
  • 定义一个int类型b,初始化赋值为6;
  • 定义一个常量int类型指针常量p,并指向变量a的地址;
  • p指向的内存赋值出错,a的值不允许修改;
  • p地址赋变量b的地址出错,p的地址不允许修改;

      示例概况

  • 定义(const + 类型 + * + const + 对象)形式,必须初始化赋值;
  • 指针对象在生命周期内不允许赋值,即对象值不允许修改;
  • 指针对象在生命周期内不允许赋地址,即对象地址不允许修改;

      示例相似情况

  • (const int * const p)、(int const * const p)、(const int const * const p) 都属于常量指针常量,所表达的含义相同。

      本节概况

  • 指针常量:指针地址不允许修改,但指针指向的内存值允许修改;
  • 常量指针:指针地址允许修改,但指针指向的内存值不允许修改;
  • 常量指针常量:指针地址和指针指向的内存值都不允许修改。

转载地址:https://lkyof.blog.csdn.net/article/details/105877234 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:一起学习C语言:数组(三)
下一篇:角色互换:普通程序员与有理想的程序员

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月17日 13时52分55秒