跳到主要内容

const char *p 和 char * const p;的区别 ?

参考答案:

const char *pchar * const p 在 C 或 C++ 语言中表示两种不同的类型,并且它们有不同的含义和用途。

  1. const char *p

    • p 是一个指向 const char 的指针。
    • 这意味着你不能通过 p 来修改它所指向的字符。换句话说,你不能使用 p 来改变它所指向的内存位置上的值。
    • 但是,p 本身(即指针变量)是可以被修改的,所以你可以改变 p 指向不同的内存位置。
    • 例如:
    	c`const char *p = "Hello";
    	p = "World";  // 可以改变 p 的指向
    	*p = 'h';     // 错误:不能通过 p 修改它所指向的字符`
    
  2. 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 *