欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]看c和指针关于const的理解,大牛勿喷,只是个人理解

[原创]看c和指针关于const的理解,大牛勿喷,只是个人理解

#include <stdio.h>
void main()
{
        //int const i ; //const object must be initialized if not extern。变量const i如果不是一个外部变量(extern),在声明时必须初始化。(1)
        int const i = 5;
        int *pi;
        int const *cpi;             //可以不初始化
        int * const pci = NULL;     //必须初始化
        int a, b /* c */;
        pi = &a;
        cpi = &b;
        //*cpi = 10;               //error : *cpi's value is const, cannot be modified。 cpi是个指针变量,而*cpi是个常量被修饰为const不可变,故给*cpi赋值会报错 (2)
        cpi = &a;                  //correct: cpi is a value can be modified 。cpi是个变量值可以被修改。
        cpi = &b;
        *pci = 10;                //correct
   // pci = &a;               //error:  pci can not be modified。pci是一个const变量,不可变,而他指向的值可变。
    const int *p1;            //.c文件这样写编译不通过,.cpp可以.在VC6.0下const int *p1和int const *p2编译不通过,CODEBLOCKS就可以编译
    int const *p2;
        //*p1 = 10 ;              //error
        //*p2 = 15;               //error
    p1 = &a;                  //correct
        p2 = &b;                  //const int *p与int const *p 这种写法没区别
    int const * const cpci;   //在VC6.0下源文件为.c编译不通过。CODEBLOCKS就可以编译
    //最后关于const修饰的指针变量可以这么理解
    //把const 看成是一个类型而int也是个类型,*p也看成是个类型,类型和类型结合,变量名看成是个个体
    //const int *p (counst int) (*p)而const int是不可变的所以*p不可变,但是p可变
    //int const *p (int count) (*p)同上
    //int * const pci(int * const)(pci) pci不可变,*pci可变,且必须初始化。
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功