const用法详解

怼烎@ 2022-12-19 11:43 330阅读 0赞

一、定义常量

使用#define的不安全性

  1. # include <iostream>
  2. using namespqce std;
  3. int main()
  4. {
  5. int a = 1;
  6. # define T1 a+a
  7. # define T2 T1-T1
  8. cout<<"T2 is "<<T2<<endl;
  9. return 0;
  10. }

输出 :T2 is 2

原因:C++把第七行语句解释为:

cout<<”T2 is “<<a+a-a+a<<endl;

用const取代#define

  1. # include <iostream>
  2. using namespqce std;
  3. int main()
  4. {
  5. int a = 1;
  6. # const T1 a+a
  7. # const T2 T1-T1
  8. cout<<"T2 is "<<T2<<endl;
  9. return 0;
  10. }

输出:T2 is 0

二、const与指针

  1. 指向常量的指针
    所指对象为常量,指针为变量

    const char p = “good”; (p+2) = “I”; //错误
    p = “very”; //正确

    int i = 5;
    const int p = &i; p = 6; //错误
    i = 6; //正确

作用:防止无意修改参数的值

  1. # include <iostream>
  2. using namespace std;
  3. void mystrcpy(char * Dest, const char *Src)
  4. {
  5. while(*Dset++=*Strc++);
  6. }
  7. int main()
  8. {
  9. char a[20] = "how are you";
  10. char b[20];
  11. mystrcpy(b, a);
  12. cout<<b<<endl;
  13. return 0;
  14. }
  1. 指针常量
    在指针名前常量const,表示指针本身是常量

    char const p = “good”;
    p = “very”; //错误,指针不能修改
    (p+2) = ‘I’; //正确,指向的内容可以修改

  2. 指向常量的常量指针
    指向内容和指针都为常量

    const char const p = “good”
    p = “very”; //错误
    (p+2) = ‘I’; //错误

注意:
const对象的地址只能赋值给指向const对象的指针,但是指向cosnt对象的指针也可以指向非const对象

  1. const int i = 5;
  2. int *p1 = &i; //错误
  3. const int *p2 = &i;
  4. int j = 6;
  5. p2 = &j; //正确

三、const与函数

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读

    相关 const用法分析

    你也许有常量的概念并会用关键字const声明一个变量为常量,但是你知道const除了声明常量外,还可以声明const指针和const成员函数。本文将讨论const对象是如何建立

    相关 const用法详解

    面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的\define 以下几点很重要,学不好后果也也很严重