zoukankan      html  css  js  c++  java
  • C++const与指针

    1.指向常量的指针变量

      指向常量的指针变量的定义方法:

      const 类型标识符 *指针变量名;

      如:

       const int *p; 

      这种方法定义的指针变量只可读取它所指向的变量或常量的值,不可借助该指针变量对其所指向的对象的值进行修改(即重新赋值)。但是,可允许这种指针变量指向另外一个同类型的其他变量。

    本人自学,教材可能有点老,有问题的话求大家指正!!!谢谢!!!

    2.指针常量

      指针常量的定义格式:

      类型标识符 *const 指针变量名=初始指针值;

      如:

       char * const p="abcde"; 

      该方法定义的指针变量,其值(是一个指针值)不可进行修改(即不允许该指针变量再指向另外一个别的变量),但可以借助该指针变量对其所指向的对象的值进行读取或修改。特别注意,这种指针在定义时必须初始化。

    3.指向常量的指针常量

      指向常量的指针常量的第一方法为:

      const 类型标识符 * const 指针变量名 = 初始指针值;

      如:

       int b;

       const int* const p=&b; 

      使用这种方法定义的变量,既不允许修改指针变量的值也不允许借助该指针变量对其所指向的对象的值进行修改。特别注意,该变量在定义的时候同样必须初始化。

    例题:

    • 指向常量的指针变量
     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     const int i=20;
     7     int k =40;
     8     const int *p; 
     9     p=&i;   
    10     cout << *p << ' ' << i << endl;
    11     p=&k;   
    12     cout << *p << ' ' << k << endl;
    13     k=200;  
    14     cout << k << endl;
    15     return 0;
    16 }
    • 指针常量
     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     char s[]="hello world!";
     7     char * const p=s;
     8     //p="xyz";  //该句错误,不可再使指针变量指向另外一个地址(指针)
     9     cout << *p << endl;
    10     *p='w'; 
    11     cout << *p << endl;
    12     *p='q'; 
    13     cout << *p << endl;
    14     return 0;
    15 }
    • 指向常量的指针常量
     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int a=10;
     7     int c=30;
     8     const int b=20;
     9     const int * const p=&a;
    10     cout << *p << endl;
    11     const int * const q=&b;
    12     cout << *q << endl;
    13     //p=&c; //错误
    14     //*p=50;    //错误  
    15     return 0;
    16 }
    17 
    18 //菜鸟,求大家批评指教,代码编写习惯和规范等等!!!谢谢!!!

    本人自学,教材可能有点老,有问题的话求大家指正!!!谢谢!!!

  • 相关阅读:
    Centos下Zookeeper的安装部署
    Zookeeper入门
    Redis高可用-主从,哨兵,集群
    Redis入门
    centos7 安装redis6.0.3
    二叉树的遍历及常用算法
    分享一个seata demo,讲两个个问题
    互联网公司,我们需要什么样的中层技术管理以及996和程序员有多大关系?
    Spring Boot微服务如何集成seata解决分布式事务问题?
    软件服务架构的一些感悟
  • 原文地址:https://www.cnblogs.com/MichaelBin/p/4523308.html
Copyright © 2011-2022 走看看