美文网首页
C语言中的const

C语言中的const

作者: 舒城8中 | 来源:发表于2018-02-27 14:48 被阅读0次

大家几乎都能知道,关键字const是用于定义常量,如果一个常量被const修饰了,那么它就不能被修改了。也有人可能会想,不是有#define为啥非要用const。的确!在一定场景下宏可以实现const相近的作用,但是const和宏相比还是有很大区别的:

1、预编译指令只是对值进行简单的替换,不能进行类型检查

2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性

3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

const的几种常用方法

int  main(int argc, char const *argv[])
{
    
    /*
     const int a;  /
     int const a; 有一样的意思
     如果我们给出 const int  a;你应该知道这是将a常量化了,但是为什么那?
     那是因为int 和const 都作为一个类型限定词,有相同的地位。
     所以你也可以写成 int const a;似乎这样更加好理解!当然这都不难,
     难点在哪里哪?当然此时你如果定义指针也是可以修改的,但是会报警告!
     当然强制类型转换后警告也不会报了!
     所以  const int a=10; 是申明了一个只可读的变量,如果 a=12;在编译期报错。
     */
    
    /*1、申明一个常变量*/
    const int a=10;
    /* a =12;  变异错误,a是编译期常量 */
    
    
    int b=10,c=55;
    
    /*2、  申明一个指针, 该指针指向的变量不可更改 ,相当于通过*p指针获得了原来实例的可读版本
     一般用于子函数调用中形参函数,限制子函数中不能对调用放内容进行更改
     如 const char* src; 或 char const *src;
     *p是常量。也就是说,p指向的数据是常量
     
     const int* p
     int const *P;
     const int* p; 这是修饰了谁那?其实我们可以这样想,如果我们把int 拿出来
     也就是 const int (*p); 等价于  int const (*p);
     由此我们可以看出来const修饰了*p啊!
     也就是指向的内容不可以改变,比如p已经指向a变量,但是*p=45;会报错,因为*p不可改变
     但是地址是可以改变的。比如c=55, p=&c;是正确的
     但是我们如果写为int const *p 似乎就非常好理解了。就是修饰了*p
     */
    const int* p=&a;
    /*  *p=45; 会报错 */
    p=&c;//正确做法
    //*p=445; 不可更改
    c=43534;//通过原来变量名可更改,相当于通过p指针获得了c变量的可读版本
    int const *ptr=&b;
    /*  *ptr=44; *ptr 是不可更改 */
    
    /* 3、 申明一个常指针变量 也就是说 该指针你只能赋值一次, 且只能在定义时候赋值 ;
     但是指针指向的变量可以改变
     int * const p;
     */
    int* const ptr2=&b;
    *ptr2=3454;
    fprintf(stdout, "%d\n", *ptr2 );
    
    /* 4、 const int *const p
     表示p指针是一个常指针变量,同时指向的变量也是常量不可更改
     */
    const int *const ptr3=&c;
    /* ptr3=&a;  错误,ptr3 是常指针变量, 只读的 */
    /* *ptr3=80; 错误,*ptr3 是常量不可更改,只读的 */
    return 0;
}

相关文章

  • 一、C++中的const、define

    C 语言中 在C语言中,const是个假语法,const 中的变量可以通过指针修改,例如: C++中 const ...

  • C/C++ Const 小知识

    Const Const 特点 [描述] 在 C、C++、D 和 JavaScript 编程语言中,const是一个...

  • 【记2】const小记

    一、首先介绍C语言中的const功能。 二、开始比较C语言与C++中的const区别。在C语言中,若采用以下代码,...

  • const使用

    通过指针可以修改c语言中const修饰变量的值 const_cast

  • const、static、extern 在头文件中似的情况小结

    const C语言中const修饰的变量存在静态区,c++中存在代码区不占内存。在...

  • C++ const 分析

    1、C语言中的const: const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上分配空间 c...

  • C++ const

    C 和 C++ 中全局 const 变量的作用域相同,都是当前文件,不同的是它们的可见范围:C 语言中 const...

  • C语言中的const

    大家几乎都能知道,关键字const是用于定义常量,如果一个常量被const修饰了,那么它就不能被修改了。也有人可能...

  • 浅谈C和C++中的const关键字

    C语言中的const const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用co...

  • 命令行参数

    C语言中的命令行参数在C语言中main函数可以接收两个参数int main(int argc, const cha...

网友评论

      本文标题:C语言中的const

      本文链接:https://www.haomeiwen.com/subject/vvfmxftx.html