zoukankan      html  css  js  c++  java
  • C语言const用法概述

    const概念

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定。

    const int MaxNum = 100;  //班级的最大人数
    MaxNum = 90;  //错误,试图向 const 变量写入数据
    

    我们经常将 const 变量称为常量(Constant)。创建常量的格式通常为:

    const type name = value;
    

    const和指针

    const int *p1;//指针所指向的内容只读,指针的指向可以改变
    int const *p2;//指针所指向的内容只读,指针的指向可以改变
    int * const p3;//指针只读,指针的指向不可改变
    const int * const p4;//指针本身和它指向的数据都是只读的
    int const * const p5;//指针本身和它指向的数据都是只读的
    

    const 和指针结合的写法多少有点让初学者摸不着头脑,大家可以这样来记忆:const 离变量名近就是用来修饰指针变量的,离变量名远就是用来修饰指针指向的数据,如果近的和远的都有,那么就同时修饰指针变量以及它指向的数据。

    const 和函数形参

    在C语言中,单独定义 const 变量没有明显的优势,完全可以使用#define命令代替。const 通常用在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用 const 来限制。

    size_t strlen ( const char * str );
    int strcmp ( const char * str1, const char * str2 );
    char * strcat ( char * destination, const char * source );
    char * strcpy ( char * destination, const char * source );
    int system (const char* command);
    int puts ( const char * str );
    int printf ( const char * format, ... );
    
    const 和非 const 类型转换

    char *指向的数据有读取和写入权限,而const char *指向的数据只有读取权限,降低数据的权限不会带来任何问题,但提升数据的权限就有可能发生危险。

  • 相关阅读:
    @@@并发实战
    @@@jvm实战
    @@@spring Boot环境下dubbo+zookeeper实战
    FastJson 支持配置的PropertyNamingStrategy四种策略
    利用MySQL统计一列中不同值的数量方法示例
    Springboot+websocket+定时器实现消息推送
    Spring AOP中args()、arg-names、argNames
    squid,nginx,lighttpd反向代理的区别
    HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
    HTTP 错误 500.24
  • 原文地址:https://www.cnblogs.com/still-smile/p/15649469.html
Copyright © 2011-2022 走看看