说一下 常量指针 和 指针常量 的区别。
指向常量的指针,也就是说指针指向的对象是常量,指向的常量不能修改。指针不是一个常量,
可以把指针指向别一个常量。
常量指针是我们最常用的,一般声明形式如下:
const int *p; int const *p;
例:
int a(1), b(3); const int *p; // 或者是 int const *p; p = &a; std::cout << "address : " << p << " value : " << *p << std::endl; p = &b; std::cout << "address : " << p << " value : " << *p << std::endl;
上边的代码是正确的用法。
不可以对指向的内容做修改:
*p = 3; // 错误
指针指向的地址不可以改变,地址的内容可以通过指针改变。指针常量在定义时必须赋值。
例:
int a(1), b(3); int *const p = &a; *p = a; std::cout << "address : " << p << " value : " << *p << std::endl; *p = b; std::cout << "address : " << p << " value : " << *p << std::endl;
上边的代码是正确的使用方式。
不能对指向的地址进行修改:
p = &b; // 错误
我们也可以这样记
const 在谁前边谁就不可以修改:
常量指针 : const 在指针前边,我们就不可以修改指针。
指针常量 : const 在变量前边,我们就不可以修改指针的地址。