美文网首页C Primer Plus
C语言中const使用方法总结

C语言中const使用方法总结

作者: 桐桑入梦 | 来源:发表于2020-01-11 20:00 被阅读0次

    1.使用const创建一个变量,这个变量不可修改

    const int pi = 3.14;
    

    2.使用const创建一个保护数组(数组内容不可以进行修改)

    #define SIZE 3;
    ...
    const int A[SIZE]={1,2,3};
    

    下面语句导致产生编译错误:

    A[1]=10;
    

    3.修饰用来指向const数据的指针(const指针也可以指向非const数据,但是从这个指针的角度看,数据是const的,不可以修改,实际上数据不一定是const的)

    double B[5]={  1.1,   2.2,    3.3,   4.4,   5.5   };
    const double *p = B;
    

    指向const数据的指针不能用来改变值,以下的操作都是不允许的

    *p = 1.0;
    p[2] = 3.0;
    

    这里const指针指向数据实际上是非const数据,故下面操作允许

    B[0]=1.0;
    B[2]=3.0;
    

    一般指向const的指针用于函数的形式参数当中,表明该函数不会使用指针改变数据

    void test(const int * a,int n);
    

    把const数据或者非const数据的地址初始化为指向const的指针或者为其赋值是合法的

    const int A[3]={1,2,3};
    int B[3]={4,5,6};
    const int *p = A;
    p = B;
    p = &B[2];
    

    但是,不能把const数据的地址赋值给普通的指针,指针赋值给const指针。否则,通过这个普通的指针就能改变const数组中数据。
    eg.使用非const标识符修改const数据会导致未知的结果

    const int a[3]={1,2,3};
    int  sum(int b[],int n){ ... }
    ...
    int s = sum(a,3);//这里会导致未知的结果
    

    4.可以声明并初始化一个不能指向别处的指针,关键是const的位置。可以使用这种指针修改它指向的值,但是它只能指向初始化设置的地址。

    int a[3]={1,2,3};
    int * const p = a;
    p = &a[1];   //不允许,因为该指针不能指向别处
    *p= 0;   //可以
    

    5.在创建指针的时候可以使用两次const,该指针即不能更改它指向的地址,也不能修改指向地址的值。

    int b[3]={1,2,3};
    const int * const p=b;
    p = &b[1];  //error
    *p = 4;       //error
    

    相关文章

      网友评论

        本文标题:C语言中const使用方法总结

        本文链接:https://www.haomeiwen.com/subject/chlmactx.html