C笔记系列一:const类型

const

限制对目标数据的修改。被const修饰的量称为常量,不能被修改。因为在使用中不能再次赋值,故在修饰普通变量时,会被强制要求初始化

void main() {
    const static int a; // 静态变量自动赋值初值0,正确
    cosnt int b;        // 常量未被初始化,错误
    a++;                // 错误
    a = 2;              // 错误
}

常量指针:指向常量的指针,如const int *p。通过该指针访问的目标单元,只能读不能写,但是并未改变目标单元的读写特性——当不通过指针访问时,仍可直接读写目标单元,只是限制了通过指针修改变量。

void main() {
    int a, b;
    cosnt int *p;  // 正确,因p本身不是常量,可以不初始化
    p = &a;        // 正确,因p本身不是常量
    *p = 40;       // 错误,*p指向的是常量,限制通过指针改变目标单元
    a = 30;        // 正确,目标单元的读写特性不会发生改变
    const int c = 2;
    int *p = &a;   // 错误,类型不匹配,应为const int *
    p = &c;        // 正确
}

指针常量:指针本身为常量,如int * const p。该指针的指向必须被初始化,且一旦初始化后,指针的指向就不能再发生改变,但通过指针访问的目标单元可以进行读写。

void main() {
    int a = 10, b = 5;
    int * const p = &a;  // 指针常量,必须被初始化
    *p = 12;             // 正确,通过指针访问的目标单元,其读写特性不变
    p = &b;              // 错误,指针的指向不能被改变
    return 0;}

猜你喜欢

转载自blog.csdn.net/deepinc/article/details/79673224
今日推荐