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 *指向的数据只有读取权限,降低数据的权限不会带来任何问题,但提升数据的权限就有可能发生危险。

  • 相关阅读:
    eclipse/myeclipse介绍
    HDU 5802 Windows 10
    LaTeX test
    数据结构2 静态区间第K大/第K小
    数据结构1 「在线段树中查询一个区间的复杂度为 $O(log N)$」的证明
    HDU 1007 Quoit Design
    HDU 5761 Rower Bo
    hihocoder #1341 Constraint Checker
    HDU #5733 tetrahedron
    hihocoder #1327
  • 原文地址:https://www.cnblogs.com/still-smile/p/15649469.html
Copyright © 2011-2022 走看看