在C语言中,const char*是一种非常常见的指针类型声明,用来表示一个指向字符常量的指针。理解它的含义对于编写安全且规范的字符串处理代码十分重要。它本质上限制了通过指针对其所指数据进行修改的能力,但不限制指针变量本身保存的地址。

const char*的基本含义
const char* p 读作:p是一个指针,指向const char类型的数据。这里的const修饰的是char,而不是指针p。因此:
- 不能通过p修改它指向的字符内容
- p本身可以指向另一个字符或字符串
例如下面这段代码:
#include <stdio.h>
int main() {
const char* p = "hello";
// p[0] = 'H'; // 错误:不能通过p修改字符串内容
p = "world"; // 正确:p可以指向别的字符串
printf("%sn", p);
return 0;
}
与char* const的区别
容易混淆的还有char* const,它表示一个常量指针,即指针本身不可改,但可通过它修改指向的内容:
#include <stdio.h>
int main() {
char str[] = "hi";
char* const p = str;
p[0] = 'H'; // 正确:可修改内容
// p = "no"; // 错误:指针本身不可改
printf("%sn", p);
return 0;
}
常见使用场景
在函数参数中,使用const char*可以避免函数内部意外修改传入的字符串:
#include <stdio.h>
void print_str(const char* s) {
// s[0] = 'x'; // 编译报错,保护原字符串
printf("%sn", s);
}
int main() {
print_str("test");
return 0;
}
总结对照表
| 声明形式 | 指针可变 | 指向内容可变 |
|---|---|---|
| const char* p | 是 | 否 |
| char* const p | 否 | 是 |
| const char* const p | 否 | 否 |
掌握const char*的含义有助于在C语言开发中更好地保护数据,减少低级错误。
const_char*C语言指针修改时间:2026-07-25 19:48:18