zoukankan      html  css  js  c++  java
  • 如何牢记C/C++中const的用法?

    (下面以 typename 表示C/C++内某一类型

    我常常会搞混 const 放在 typename* 的前面和后面的区别,今天特地查看了它们两个各自的含义,总结了一下:

      const typename* ptr 是指 ptr 是个指向常量的指针( pointer to constant data ),它认定所指向的内容是个常量,因此不能通过 *ptr 来改变它所指向的内容。比如说:

       1 const int apple = 0;

       2 const int* thirstyBoy = &apple;

       3 (*thirstyBoy)=1;

      编译器会在第三行报错。可以这样记忆:const typename* ptr, 因为 const 后面就是 typename ,所以是 ptr 所指向的类型为 typename 的量不能改变。

      

      typename * const ptr 就很容易理解了,因为 const 后面就是ptr,所以 ptr 是常量,不能改变ptr的值,因此叫做指针常量( constant pointer ), 如果试图改变 ptr 的内容:

         1  int apple = 0 , banana = 1;

       2  int * const thirstyBoy = &apple;

       3  thirstyBoy = &banana;

      编译器会在第三行报错。

    注1:const typename* ptr 的 ptr 虽然认定它所指向的内容是个常量,但它也可以指向一个变量:

       1 int apple = 0;

       2 const int* thirstyBoy = &apple;

      这是合法的,然后也可以直接通过给 apple 赋值改变 apple 的值:

       3 apple = 1;

      但就是不能通过 *thirstyBoy 改变 apple 的值。

    注2:上面所有的 const typename 都可以替换为 typename const 哦 :)

    ————感受到了一点C语言设计之精巧

  • 相关阅读:
    pip安装超时
    MySQL+Android+JSP(php)的微博程序设计
    json的jar包
    eclipse远程连接不上数据库
    Dialog的Activity形式
    javaBean?
    Android生命周期详解
    四种启动模式
    softMax怎么更加方便地理解
    sqldevelpoer第一次使用出现错误的处理
  • 原文地址:https://www.cnblogs.com/Luxuer/p/5695968.html
Copyright © 2011-2022 走看看