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

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

作者:野牛程序员:2024-07-29 16:39:16 C++阅读 2431
C++ char* const cp与 const char* cp

在C++中,char* const cpconst char* cp 是两种不同的指针声明方式,它们的区别在于指针的常量性和指向的内容的常量性。

char* const cp

char* const cp 表示一个常量指针(constant pointer),即指针本身是常量,不能修改指向的地址,但是指针指向的内容是可以修改的。

char* const cp = someCharPointer;

// 允许修改指针指向的内容
*cp = 'A';

// 不允许修改指针本身的地址
cp = anotherCharPointer; // 错误

const char* cp

const char* cp 表示一个指向常量字符的指针(pointer to constant char),即指针指向的内容是常量,不能修改指向的内容,但是指针本身是可以修改的。

const char* cp = someCharPointer;

// 不允许修改指针指向的内容
*cp = 'A'; // 错误

// 允许修改指针本身的地址
cp = anotherCharPointer; // 正确

总结

  • char* const cp:指针是常量,指向的内容可以修改。

  • const char* cp:指向的内容是常量,指针本身可以修改。

示例代码

下面的示例代码演示了这两种指针的使用和限制:

#include <iostream>

int main() {
    char data[] = "Hello";
    char data2[] = "World";

    // char* const: 常量指针,指向的内容可变
    char* const constPointer = data;
    constPointer[0] = 'h';  // 修改指向内容,正确
    // constPointer = data2; // 修改指针本身,错误

    std::cout << "constPointer: " << constPointer << std::endl;

    // const char*: 指向常量字符的指针,指针可变
    const char* pointerToConst = data;
    // pointerToConst[0] = 'h'; // 修改指向内容,错误
    pointerToConst = data2;  // 修改指针本身,正确

    std::cout << "pointerToConst: " << pointerToConst << std::endl;

    return 0;
}

运行此代码,输出结果:

constPointer: hello
pointerToConst: World

在这段代码中:

  • constPointer 是一个常量指针,可以修改它指向的数据,但不能修改它指向的地址。

  • pointerToConst 是一个指向常量字符的指针,可以修改指针指向的地址,但不能修改它指向的数据。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • C++
  • 最新推荐

    热门点击