面试题答案
一键面试- 常指针(const pointer)
- 定义方式:指针本身是常量,即指针的地址不能改变,但是指针所指向的值可以改变。定义形式为
type * const pointer_name = &variable;
,其中type
是指针所指向变量的类型,pointer_name
是指针名,variable
是同类型的变量。 - 代码示例:
- 定义方式:指针本身是常量,即指针的地址不能改变,但是指针所指向的值可以改变。定义形式为
#include <iostream>
int main() {
int num1 = 10;
int num2 = 20;
int * const ptr = &num1;
*ptr = 15; // 合法,可改变指针所指向的值
// ptr = &num2; // 非法,常指针的地址不能改变
std::cout << "Value of num1 through ptr: " << *ptr << std::endl;
return 0;
}
- 指向常变量指针(pointer to const variable)
- 定义方式:指针指向的是常量,即不能通过该指针改变所指向的值,但是指针本身的地址可以改变。定义形式为
const type * pointer_name = &variable;
或者type const * pointer_name = &variable;
,其中type
是指针所指向变量的类型,pointer_name
是指针名,variable
是同类型的变量。 - 代码示例:
- 定义方式:指针指向的是常量,即不能通过该指针改变所指向的值,但是指针本身的地址可以改变。定义形式为
#include <iostream>
int main() {
int num1 = 10;
int num2 = 20;
const int * ptr = &num1;
// *ptr = 15; // 非法,不能通过指向常变量的指针改变所指向的值
ptr = &num2; // 合法,指针本身的地址可以改变
std::cout << "Value of num2 through ptr: " << *ptr << std::endl;
return 0;
}
两者使用不同之处总结:
- 常指针重点在指针本身是常量,其地址不可变,而指向的值可变。
- 指向常变量指针重点在指针指向的是常量,通过该指针不能改变所指向的值,但指针本身地址可变。