zoukankan      html  css  js  c++  java
  • C++中的const

    参考网址:
    1.http://blog.csdn.net/miyunhong/archive/2010/09/24/5903857.aspx
    2.http://developer.51cto.com/art/201001/180130.htm
    3.http://developer.51cto.com/art/201002/182348.htm
    4.http://tech.sina.com.cn/s/2004-09-17/0735426801.shtml
    5.http://blog.chinaunix.net/u/30686/showart_524480.html

    第一个例子:
    #include <iostream>

    using namespace std;
    void main()
    {    
        const int  qq=456;
        //int * const p表示声明一个指向非const对象的const指针
        int * const p=(int * const)&qq;    
        *p=123;
        cout<<qq<<endl;//输出456,没有变
        cout<<*p<<endl;//输出123

        int num=100;
        //这一句回报错:p=&num;
        int * const p2=&num;
        *p2=6;
        cout<<num<<endl;//输出6,值改变了
        cout<<*p2<<endl;//输出6
    }


    第二个例子:
    #include "iostream"


    using namespace std;
    void main()
    {    
        const int num=123;
        int *p=const_cast<int *>(&num);
        //还可以这样写:int *p=(int *)&num;
        *p=456;
        cout<<num<<endl;//输出123,值没有被改变
        cout<<*p<<endl;//输出456
    }





    第三个例子:
    #include "iostream"
    #include "My.h"

    using namespace std;
    void main()
    {    
         extern const int a;
        int *p = (int *)&a;
        cout<<*p<<endl;//输出46
        *p=99;//执行到此处会报错“内存不能为written”
        
        
    }
    My.h如下:

    extern const int a=46;

     第四个例子:

    void Fun(const int arr[])
    {    
        int *p=(int *)arr;
        *p=55;
    }


    void main()
    {
        int arr[3]={3,6,9};
        Fun(arr);
        printf("%d\n",arr[0]);//输出55
        int num=1;
        int const *p=&num;
        int *p2=(int *)p;
        *p2=123;
        printf("%d\n",num);//输出123
    }
     

     第五个例子:

      const int num=789;
        const int  *p;
        p=&num;
        int *p2=(int *)p;
        *p2=22;
        printf("%d\n",num);//输出789,推测是因为程序编译以后,这句代码成为printf("%d\n",789),这也证明对const常量进行&取地址操作就会将常量变为只读变量的说法是错误的
        printf("%d\n",*p);//输出22
        printf("%d\n",*p2);//输出22 

  • 相关阅读:
    实验五——循环结构学习总结
    对象判等
    一个转行的程序员给我们的忠告,很中肯
    自定义异常类
    Python入门系列(一):感言
    Python入门系列(三):基本概念
    Python入门系列(二):环境搭建(基于Windows)
    Python入门系列(四):运算符与表达式
    JQuery前奏:特性简介
    JQuery对象与DOM对象互相转换
  • 原文地址:https://www.cnblogs.com/mxw09/p/1837999.html
Copyright © 2011-2022 走看看