zoukankan      html  css  js  c++  java
  • C语言,const

    const意味着“只读”

    ubunto下的实验

    1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

    2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

    3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

    #include <stdio.h>

    void main(void)

    {

     int const a = 10;

     int *p = (int*)&a;

     *p = 20;

     printf("&a=%d ", &a);

     printf(" p=%d ", p);

     printf(" a=%d ", a);

     printf("*p=%d ", *p);

    }

     //&a=-1081948900

     //p=-1081948900

     //a=20

     //*p=20

    1) 修饰一般常量 一般常量是指简单类型的常量

    const int a;

    int const a;

    2)修饰常指针                                                                                            const int *A  ,  int const *A; //const修饰指向的对象,A可变,A指向的对象不可变

    int *const A;                  //const修饰指针A, A不可变,A指向的对象可变

    const int *const A;            //指针A和A指向的对象都不可变

    3) 修饰函数的常参数 const修饰符也可以修饰函数的传递参数,格式如下:void Fun(const int Var); 告诉编译器Var在函数体中的无法改变,从而防止了使用者的一些无意的或错误的修改。

    #include <stdio.h>

    int const a = 10;

    void main(void)

    {

     int *p = (int*)&a;

     *p = 20;

     printf("%d ", *p);

    }

    //段错误

    #include <stdio.h>

    void main(void)

    {

     int const a = 10;

     int b = 20;

     int *p = (int*)&a;

     *p = 20;

     printf("&a=%x ", &a);

     printf("&b=%x ", &b);

     printf(" p=%x ", p);

     printf(" a=%d ", a);

     printf("*p=%d ", *p);

    }

    //&a=bfbc9c1c

    //&b=bfbc9c18

    // p=bfbc9c1c

    // a=20

    //*p=20

    //从中可以看出a的值存在栈中。

     
  • 相关阅读:
    OA权限管理的实现(下)
    Eclipse及其插件介绍和下载(转)
    [转载]在Redhat Linux AS 4下实现软件RAID
    RAID磁盘阵列术语详解(转)
    [转载]关于"编译器失败,错误代码为128。"的解决方案
    Android的SurfaceView使用
    剖析 SurfaceView Callback以及SurfaceHolder
    android drawable 应用
    Android layout xml总结
    listView控件,adapter,以及其他控件的组合
  • 原文地址:https://www.cnblogs.com/mylinux/p/4667770.html
Copyright © 2011-2022 走看看