C++ const 使用详解:指向常量的指针与常量指针
const 使用正确的两项 ( )
本文将分析以下代码段,并解释为什么只有选项A和C是正确的。
A. int a = 3; const int *p = &a;
B. int a = 3; const int *const p = &a; *(++p) = 4;
C. const int a = 3; const int *p = &a;
D. const int a = 3; int *p = &a;
正确选项:A 和 C
选项A:
- 变量
a被定义为int类型。 - 指针
p被定义为指向const int的指针,并指向了变量a的地址。 - 这种情况下,指针
p指向的内存位置存储的是一个常量int类型的值。虽然可以通过p读取值,但不能通过p修改该值。
选项C:
- 变量
a被定义为const int类型。 - 指针
p被定义为指向const int的指针,并指向了变量a的地址。 - 由于
a是一个常量,所以p指向的内存位置同样存储一个常量int类型的值,不能被修改。
选项B:
- 变量
a被定义为int类型。 - 指针
p被定义为指向const int的常量指针。 - 在
*(++p) = 4;这句语句中,试图通过指针p修改指向的值,但p是一个常量指针,不能修改其指向的值。
选项D:
- 变量
a被定义为const int类型。 - 指针
p被定义为指向int的指针。 - 由于
a是一个常量,不能通过指针p修改指向的值,即使p是一个指向int的指针。
总结:
const 关键字用于声明常量,可以修饰变量或指针。指向常量的指针(如选项A和C)不允许修改指针指向的值,而常量指针(如选项B)不允许修改指针本身指向的内存地址。在使用 const 时,要明确其修饰的对象是变量还是指针,以避免错误。
原文地址: https://www.cveoy.top/t/topic/qir5 著作权归作者所有。请勿转载和采集!