面试题答案
一键面试#include <iostream>
int main() {
// 定义一个普通变量
int num = 10;
// 常指针:指针本身的值(即所指向的地址)不可改变,但可以通过指针修改所指向的值
int* const ptr1 = #
// 这里ptr1指向num后,就不能再指向其他变量,例如 ptr1 = &anotherNum; 这样的赋值是不允许的
*ptr1 = 20; // 但可以通过ptr1修改num的值,现在num变为20
// 指向常变量的指针:指针本身的值(即所指向的地址)可以改变,但不能通过指针修改所指向的值
const int* ptr2 = #
// ptr2可以指向其他常量或变量,例如 int anotherNum = 30; ptr2 = &anotherNum;
// *ptr2 = 30; 这样的操作是不允许的,因为ptr2指向的是常量,不能通过它修改值
std::cout << "num的值: " << num << std::endl;
return 0;
}
常指针的特性:
- 指针本身是常量,一旦初始化指向某个地址,就不能再改变其指向。
- 可以通过常指针修改所指向的变量的值。
指向常变量的指针特性:
- 指针本身不是常量,可以指向其他地址。
- 不能通过该指针修改所指向的变量的值,即使该变量本身不是常量(如果是常量则更不能修改)。
两者的区别:主要在于指针本身是否可变(常指针不可变),以及能否通过指针修改所指向的值(指向常变量的指针不能修改)。