zoukankan      html  css  js  c++  java
  • const浅析

    // age1age2是常量,只读,下面两个写法是相同的
        const int age1 = 20;
        int const age2 = 30;
        
    // const的修饰的*p1和*p2,*p1和*p2是常量,不能通过p1、p2指针间接修改其他变量的值,下面p1和p2的写法相同
        const int *p1 = &age;
        int const *p2 = &age;
        
        int num = 30;
        p1 = #
        p2 = #
        
        // 写法错误 *p1 = 40;
        // 写法错误 *p2 = 50;
        
        // const修饰的p3,p3是个常量,p3不能再指向其他变量
        int * const p3 = &age;
        
        // 写法错误
        //        int num = 30;
        //        p3 = #
        
        // 写法正确
        //        *p3 = 30;

     

    #include <stdio.h>
    
    /*
     const 使用地方
     
     1)修饰变量
     
     2)修饰指针变量
     
     3)修饰数组
     */
    
    /**
     *  const修饰变量,使得变量变成常量
     */
    void test1()
    {
        // 使用const修饰变量a
        const int a = 10;
        printf("a = %d
    ", a); // 10
    //    a = 20; // read-only
        printf("a = %d
    ", a);
    }
    
    /**
     *  用指针强制修改const常量
     */
    void test2()
    {
        // 使用const修饰变量a
        const int a = 10;
        printf("a = %d
    ", a); // 10
        int *p = &a;
        *p = 100; // 强制修改常量
        printf("a = %d, *p = %d
    ", a, *p); // 10,100
    }
    
    int main(int argc, const char * argv[]) {
        
        int a = 10;
        int b = 20;
        
        // 定义个指针变量,p指向a
        // 此处的const的作用是指针变量p的指向可以改变,但是指向的变量的值
        // 不能改变
        // 1.const修饰的指针变量指向可变,指向的变量的值不可变
        const int *p = &a; // 给p初始化
        p = &b; // 重新修改了p的指向
    //    *p = 100; // 错误写法
        
        int const *p1 = &a;
        p1 = p; // p1的指向也是可以改变的
    //    *p1 = 100; // p1指向的变量的值时不能改变的
        
        // 2.const修饰的指针变量,指针变量指向的变量值可以改变,指向不能变
        int * const p2 = &a;
        *p2 = 100; // 值可以改变
    //    p2 = &b; // p2的指向不能变
        
        // 3.const修饰的指针变量的指向和值,都不能改变
        const int * const p3 = &a;
    //    p3 = &b; // 指向不能变
    //    *p3 = 100; // 指向的变量的值也不能变
        
        
        printf("a = %d
    ", a);
        
        /**
         记忆技巧:
            看 const 和 * 的位置
            如果  const 在 *的左侧    表示指针变量指向的变量的值不能变,但是指向可以改变
            如果  const 在 *的右侧    表示指针变量指向的变量的值可以改变,但是指向不就可以改变
            如果  const   出现在 *的两侧,表示指针变量的指向和值都不能改变
         */
        
        return 0;
    }
  • 相关阅读:
    进程的挂起及恢复
    移植 iconv
    产生不重复随机数
    Javascript数据验证类
    简单设置让EasyUI显示中文,日期选择框格式为yyyyMMdd格式
    NPOI开源组件(操作Execl)创建Workbook和Sheet,创建单元格,设置行列样式等
    PL/SQL中流程控制语句 和Oracle临时表
    c#字符串中包含的运算符按正常计算 例如按四则运算等,类似公式计算,很好很强大
    判断一个数组中的值是否包含在另一个数组中
    利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格
  • 原文地址:https://www.cnblogs.com/521it/p/5017321.html
Copyright © 2011-2022 走看看