c - 为什么字符串函数有一些参数作为 const char *(指向常量字符的指针)?

标签 c

字符串(字符数组)可以在 C 中修改,但不能修改字符串文字。但是为什么像 strlen(const char *str) 这样的字符串函数有一个指向常量字符的指针呢?

最佳答案

因为他们不修改(也不需要修改)他们的参数字符串。这就是 const 的意思。

如果 strlen 的参数声明为 char *(没有 const),您将无法使用 strlen 确定常量字符串的长度。例如

size_t my_own_strlen(char *str) { /* whatever */ }

const char hello[] = "Hello";

size_t l1 = my_own_strlen(hello); // Error: cannot convert `const char *` to `char *`
size_t l2 = strlen(hello);        // OK

将该参数声明为 const char * 使得 strlen 适用于常量和非常量字符串。

关于c - 为什么字符串函数有一些参数作为 const char *(指向常量字符的指针)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967934/

相关文章:

c - 是否可以向 GDB 添加对自定义 RTOS 线程的支持?

c - C语言如何读取scanset中的空格

c - 如何设置 strtol 的限制

c - 这两个陈述有什么区别?

c# - 用于跨平台应用程序的 CRC

c - (CLion/CMake) 为什么我的 c 文件保存在项目目录中时不属于任何目标项目?

c - 作为 const 或操作数的正确参数

c - C 中的信号排队

c - 是否可以在 Lua 中禁用堆栈回溯?

c# - 如何在 C# 中编写类似于 String.isNullOrEmpty 的 C 代码