.用C++自己设计一个程序,测试 const 的三种用法:指向常量的指针,常指针,指向常量的常 指针。
时间: 2024-09-26 18:09:44 浏览: 39
在C++中,`const`关键字有三种主要用法,用于声明常量、常量指针和指向常量的对象。下面是一个简单的程序,展示了这三种用法:
```cpp
#include <iostream>
// 常量数据
const int value1 = 10; // 指向常量的变量
// 指向常量的指针
const int* ptr1 = &value1; // 变量ptr1指向一个常量
std::cout << "Value at ptr1: " << *ptr1 << "\n"; // 输出:10 (不可改变)
// 常量指针
const int* const ptr2 = &value1; // ptr2是一个常量指针,不能改变所指向的地址
std::cout << "Value at ptr2: " << *ptr2 << "\n"; // 输出:10 (不可改变,也不能重新赋值)
// 指向常量的常量指针
const int (*const ptr3)[2] = nullptr; // ptr3是一个指向二维常量数组的常量指针
// 注意这里不能直接初始化,因为无法动态分配二维数组
// (编译器可能会报错,如果试图赋值,也会编译错误)
int main() {
// 尝试修改ptr2和ptr3会报编译错误,因为他们都是常量
// ptr2 = &another_value; // 错误:不能改变常量指针的地址
// ptr3 = new int[2][2]; // 错误:不能改变指向常量的指针
return 0;
}
```
在这个程序中,我们看到了三种`const`的用法导致的不同约束。`ptr1`只能读取其指向的值;`ptr2`既不能改变所指地址也不能更改指向;`ptr3`虽然可以指向一个二维数组,但是这个数组本身必须是常量。
阅读全文