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

我们经常可以在函数接口参数位置看到有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去析构内存,不能让你随意改变指针的指向。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 1,765评论 1 6
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,536评论 1 51
  • 乘热打铁,先上自己的感受吧 讨论开篇就是什么是分身术, 在听课前我原本以为是启发如何更好的安排好时间和各项工作等,...
    Jess桂阅读 340评论 2 0
  • 生活就像蚊香 一圈一圈地转 从后往前看 总有似曾相识之感 有人将你点燃 有人将你往地上按 从始至终 来去就像一场空...
    清水浮萍阅读 120评论 0 0
  • 玩意象。半文盲说读不懂 写口语。掉书袋批没意境 读者虽然不多。却什么鸟都有 写诗不比玩政治花样 能忽悠到很多人 孤...
    文学山主编山下阅读 247评论 4 4