在cstring.h文件中存在一个函数:
int strcmp ( const char *s1, const char *s2 ),但为什么只有数据是常量,使指针和数据都不变更安全.在我看来,正确的函数版本应该是这样的:
int strcmp ( const char * const s1, const char * const s2 )
Run Code Online (Sandbox Code Playgroud)
参数的顶级const修饰符将从声明中删除,因为它们与客户端无关.参数是否更改是实现细节.声明函数为完全有效void f(int x),然后将其定义为void f(const int x)(反之亦然).
在你的榜样,即使s1和s2在里面修改strcmp,客户端不会注意到这些修改,因为指针是按值(复制到功能)通过.也就是说,如果你打电话strcmp(a, b),然后a和b将保留它们的值,即使str1与str2被改变.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |