zoukankan      html  css  js  c++  java
  • c语言中:const

    符号常量与常变量:

    #define PI 3.14   //符号常量

    const float pi=3.14;  //常变量

    符号常量:预处理时对字符进行替换,不占用存储空间

    常变量:占用存储空间,但是值不可变。

    const的用法举例:

    (1)const常用方法:

    count_num内容不能被修改

    const int  count_num =23;
    
    int const  count_num =23; 

    (2)const用于指针

    判别方法: const在 * 的左边,所指对象值是常量;const在 * 的右边,所指的对象是常量。 

    ①p指针所指的对象值不能改变,但是p指针的指向可以改变。

    const int* p; 
    
    int const* p;
    1 int b = 52 int c = 33 const int *p=&b;
    4 *p=6//错误,不能通过指针修改所指向的值;
    5 p=&c;    //正确,可以修改指针的值 

    ②常指针p的指向不能改变,但是所指的对象的值可以改变。

    int * const p; 
    1 int b = 52 int c = 33 int *const p = &b;
    4 *p = 6;  //正确,可以修改指针所值向的值
    5 p =&c;   //错误,不可以修改指针的值

    ③p所指对象的指向以及对象的值都不可改变

    const int * const p;

    (3)const用于形参

    void foo(const int * p)

    const用于形参时说明了形参在函数内部不会被改变。这种形式通常用于数组形式的参数中模拟传值调用。这也是const最有用之处,限定函数的形参,这样该函数将不会修改实参指针所指向的数据。这里需要注意得的是,是函数不应该去修改而不是不能修改。

    (4)const用于结构体!!!!

    typedef struct student {
        char name[32];
        int age;
    } Stu_st, *Stu_pst;

    struct student取个别名为Stu_st,将struct student *取个别名Stu_pst:
    ①struct student stu1 等价于 Stu_st stu1
    ②struct student *stu2 等价于 Stu_pst stu2 等价于 Stu_st *stu2

    大多数人认为第一个中const修饰的是stu3指向的对象,第二个中const修饰的是stu4这个指针。 其实编译器来说只认为Stu_pst是一个类型名,所以两个均是表示为修饰的是stu3,stu4这个指针

    const Stu_pst stu3;
    Stu_pst const stu4;
    #include<stdio.h>
    
    typedef struct student {
        char name[32];
        int age;
    }Stu_st, *Stu_pst;
    
    int main() {
        const Stu_pst stu3;//定义个常量指针
        Stu_pst const stu4;
    
        //下面两条语句可以编译通过就证明
        //修饰的是stu3,stu4这个指针,并非stu3,stu4指向的对象。
        stu3->age = 22;
        stu4->age = 23;
    
        //当指针发生改变时,编译就会报错的
        stu4 = stu3;
        return 0;
    }

     参考链接:

    https://www.cnblogs.com/happying30/p/9350712.html

    https://blog.csdn.net/danny_llp/article/details/108894715

  • 相关阅读:
    ios开发,NSFileManager的使用
    iOS开发-常用第三方开源框架介绍(绝对够你用了)
    iOS开发常用第三方开源框架
    对佛学和个人发展的思考总结(十八)心流、非人情网络、穷人、人生机会、平衡计分卡
    php 判断字符串中包含重复相同的次数 array_count_values str_split max 函数组合使用
    存储过程一次性返回多个数据集,逻辑层与前端处理
    动态改变div背景颜色
    在asp.net mvc应用中使用vue.js
    angularjs单一页面中高频访问相同web api,出现阻塞和等待
    Windows安装配置OpenGrok
  • 原文地址:https://www.cnblogs.com/darren-pty/p/13865142.html
Copyright © 2011-2022 走看看