const在C语言上的定义和用法

2017-11-05  本文已影响8人  蔡俊宇

我们经常可以在函数接口参数位置看到有const关键字,但是这个关键字到底有什么作用呢?其实const关键字的作用主要是看它在 * 号的左边还是右边。

如果 const 是在 * 号的左边,主要表示的是指向的内存空间内容不能够随意修改;如果 const 是在 * 号的右边,主要表示的是指向的,代表了常量指针,其内容可以修改,但是指针指向的目标内存是不能够修改的;如果*号左右都有指针的话,便说明,指针指向和内容都不能够修改。

举例说明:

int getStr(const char* p1){
    //此处const的作用是p1所指向的内存空间不能够随意修改
    //p1[0] = 'a';
    p1 = 0x1;
    p1 = 0x2;
    return 0;
    
}
int getStr2( char* const p1){
    //此处const的作用是指针p1是一个常量,指向的地址可以随意修改,但是指针不能改动
    p1[0] = 'a';
//    p1 = 0x1;
//    p1 = 0x2;
    //p1++;
    return 0;
    
}
int getStr3(const char* const p1){
    //指针和指针地址都不能够随意修改
//    p1[0] = 'a';
    //    p1 = 0x1;
    //    p1 = 0x2;
    //p1++;
    return 0;
    
}

int main(int argc, const char * argv[]) {
    
     system("pause");
    
    return 0;
}

思考:为什么int a[10]是一个常量?

int a[10];
    // a++; 报错
    int *p = a;
    p++;

    system("pause");

    return 0;
}

因为C++编译器要拿着a去析构内存,不能让你随意改变指针的指向。

上一篇 下一篇

猜你喜欢

热点阅读