const char *p 和 char * const p;的区别 ?
参考答案:
const char *p
和 char * const p
在 C 或 C++ 语言中表示两种不同的类型,并且它们有不同的含义和用途。
-
const char *p
:p
是一个指向const char
的指针。- 这意味着你不能通过
p
来修改它所指向的字符。换句话说,你不能使用p
来改变它所指向的内存位置上的值。 - 但是,
p
本身(即指针变量)是可以被修改的,所以你可以改变p
指向不同的内存位置。 - 例如:
c`const char *p = "Hello"; p = "World"; // 可以改变 p 的指向 *p = 'h'; // 错误:不能通过 p 修改它所指向的字符`
-
char * const p
:p
是一个const
指针,指向char
。- 这意味着
p
一旦被初始化指向某个内存位置,就不能再被改变指向其他位置。 - 但是,你可以通过
p
来修改它所指向的内存位置上的值。 - 例如:
c`char str[] = "Hello"; char *const p = str; p = str + 1; // 错误:不能改变 p 的指向 *p = 'w'; // 正确:可以通过 p 修改它所指向的字符`
这两种类型在编程中都有用,选择哪种类型取决于你的具体需求。如果你想要一个不能被改变指向的指针,但是可以通过这个指针来修改数据,那么你应该使用 char * const
。如果你想要一个可以通过指针来改变数据的指针,但是不想让这个指针被改变指向,那么你应该使用 const char *
。