指针常量与常量指针区别

指针常量(Constant Pointers)常量指针(Pointers to Constants)是两种不同的C++指针类型,它们的区别在于常量性(constness)的位置和应用:

  1. 指针常量(Constant Pointers):这是一个指针,一旦初始化后,就不能再改变指向其它位置。然而,你可以改变指针所指向的内容。定义指针常量的格式如下:
    int value = 5;
    int *const ptr = &value;
    

    在这个例子中,ptr是一个指针常量,指向value。你不能改变ptr的值使其指向其他位置,但你可以改变value的值。

    int anotherValue = 10;
    ptr = &anotherValue;  // Error! ptr is a constant pointer.
    *ptr = 10;  // OK. Changing the value where ptr points to is fine.
    
  2. 常量指针(Pointers to Constants):这是一个指针,它指向的内容不能被改变,但是你可以改变指针指向的位置。定义常量指针的格式如下:
    int value = 5;
    const int *ptr = &value;
    

    在这个例子中,ptr是一个常量指针,指向value。你不能通过ptr改变value的值,但你可以改变ptr的值使其指向其他位置。

    int anotherValue = 10;
    ptr = &anotherValue;  // OK. Changing the pointer to point somewhere else is fine.
    *ptr = 10;  // Error! ptr is a pointer to constant.
    

总的来说,指针常量是不能改变指向的指针,而常量指针是不能改变所指向的值的指针。

发表评论

后才能评论