c/c++语言开发共享C:const vs no const ..如何编译?

我有一个简单的C函数,我声明为:

int strLen(const char* str_) { str_ = (char*) 0; return 0; } 

编译时我感到非常惊讶! 这是为什么?

虽然这个onedoes没有编译(这是有道理的):

 int str(const int i_) { i_ = 0; return 0; } 

    因为const char* str_表示str_是指向const字符的指针。

    您可以更改str_本身,但不能更改它指向的内容。

     int strLen(const char* str_) { str_ = (char*) 0; /* allowed */ str_[0] = ''; /* not allowed */ return 0; } 

    在第一个中,您正在更改指针str_指向的内容; 指针str_不是const; 它只是指向const数据。 你可以使指针const如下:

     int strLen(const char* const str_) 

    这遵循C声明的惯例,

     char *str; 

    意味着*str会给你一个char (换句话说, str是一个指向char的指针)。 同样的,

     const char *str; 

    意味着*str将为您提供一个const char ,或者换句话说, str是一个指向const char的指针。 所以,你不能改变*str ,但你可以改变str

    如果要使str本身为const ,请使用以下语法:

     char *const str; 

      以上就是c/c++开发分享C:const vs no const ..如何编译?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559869.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐