当前位置:首页 C++ > 正文

C++中char* const cp与 const char* cp

作者:野牛程序员:2023-07-17 17:10:41 C++阅读 2771

在C++中,char* const cpconst char* cp 是两种不同的声明方式,它们的含义和用法略有不同。

  1. char* const cp

    • 这是一个指针声明,指针名为 cp

    • const 关键字应用于指针本身,表示指针是一个常量。也就是说,一旦指针 cp 被初始化,它的值不能被修改。

    • 指针 cp 指向的字符可以被修改,因为 const 关键字不应用于指针指向的内容。

    • 以下是一个示例:

      char* const cp = "Hello";
      cp[0] = 'h';  // 合法:修改了指针指向的字符
      cp = "World"; // 非法:不能修改指针的值
  2. const char* cp

    • 这也是一个指针声明,指针名为 cp

    • const 关键字应用于指针指向的字符,表示指针所指向的字符是常量,不能通过指针修改字符的值。

    • 指针 cp 的值可以被修改,因为 const 关键字不应用于指针本身。

    • 以下是一个示例:

      const char* cp = "Hello";
      cp = "World"; // 合法:可以修改指针的值
      cp[0] = 'h';  // 非法:不能通过指针修改字符的值

总结:

  • char* const cp 表示指针本身是常量,指向的字符可以修改。

  • const char* cp 表示指针指向的字符是常量,指针本身可以修改。


当使用 char* const cp 声明一个指针时,指针本身是常量,即指针的值不能被修改,但是指针所指向的字符可以被修改。下面是一个例子:

#include <iostream>

int main() {
    char str[] = "Hello";
    char* const cp = str;

    std::cout << cp << std::endl;  // 输出 "Hello"

    // 修改指针所指向的字符
    cp[0] = 'h';

    std::cout << cp << std::endl;  // 输出 "hello"

    // 尝试修改指针的值,会导致编译错误
    // cp = nullptr;

    return 0;
}

接下来,让我们看看使用 const char* cp 声明的指针示例:

#include <iostream>

int main() {
    const char* cp = "Hello";

    std::cout << cp << std::endl;  // 输出 "Hello"

    // 尝试修改指针所指向的字符,会导致编译错误
    // cp[0] = 'h';

    // 修改指针的值
    cp = "World";

    std::cout << cp << std::endl;  // 输出 "World"

    return 0;
}

在上面的示例中,声明了一个指向字符串常量 "Hello" 的指针 cp,由于 cpconst char* 类型,不能通过 cp 修改指向的字符。因此,尝试修改 cp 所指向的字符会导致编译错误。但是,可以修改指针 cp 的值,所以将其指向 "World" 是合法的。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击