#include <iostream.h>
void main()
{
?int var1 = 10, var2 = 20;
?int * p1;
?const int *
p2;//意思是他所指向的*p2是一个常量,我们无法通过p2来修改它所指向的对象
?????//说白了就是*p2
= newData;错误
?int const * p3;//注意这种定义形式和const int *
p2效果一样的。
?
?int * const p4 =
&var1;//注意这里定义的是常量指针,意味着必须初始化,并且以后不能够修改指针再去指向其他变量,但是他所指向的指可以修改
?
?const int * const p5 =
&var1;?//不用说了阿我们只能够用他们而不能够修改任何东西,也就是只读
?int const * const p6 =
&var1;?//同上
?//验证:意思是他所指向的*p2是一个常量,我们无法通过p2来修改它所指向的对象
?//初始化
?p2 = &var1;
?p3 = p2;
?
?cout << "{var1=" << var1 <<
"}{*p2=" << *p2 << "}"
??<< "{*p3=" << *p3
<< "}" << endl;
?cout << "期望修改var1=" << var1
<< "的内容"<< endl;
?var1++;
?cout << "var1++,var1=" << var1
<< "自加后" << endl;
?cout << "期望修改*p2=" << *p2
<< "的内容,通过(*p2)++"<< endl;
?//(*p2)++;//error
?cout << "(*p2)++;l-value specifies const
object,也就是说(*p2)为常量不可修改,注意上面我们修改了var1"
<< endl;
?
?//证明:注意这里定义的是常量指针,意味着必须初始化,并且以后不能够修改指针再去指向其他变量,但是他所指向的指可以修改
?cout << "int * const p4 =
&var1\n(*p4)++,";
?(*p4)++;
?cout << (*p4);//可以修改
?//p4 = &var2;//error:l-value specifies const
object,p4是常量
?//对于p5和p6应该不难理解了吧
?//补充下,如果你通过变量的两个属性入手一样可以解答问题,
?//就是变量的类型和变量的内容数值
?//const int *
p1,p1内容数值是一个整形变量的地址;
?//类型是const int * 也就是它是int
*,并且他经过*运算后的东西是常量
// int *const
p3,p3内容数值是一个整形变量的地址;因为const离类型近
?//类型是int * const 也就是它是int
*,并且他的内容是const,因为const离变量近
}
分享到:
相关推荐
##### 案例2:`const`修饰符与指针结合 ```cpp int a = 10; const int *const p = &a; cout *p |" ; ``` 在这里,`p`是一个指向`int`类型的`const`指针,它既不能改变所指向的地址,也不能通过解引用改变`a`的值。...
8. const修饰符的注意事项:const修饰符不仅能够提高代码的安全性,还能提升性能,因为const常量可以被存储在只读内存区域。然而,const常量实际上并不会被存储在程序的数据段中,而是存储在只读代码段(文本段),...
`const` 是一个类型修饰符,用于声明一个变量或对象为常量,意味着它的值在声明后不能被修改。例如,`const int Max = 100;` 声明了一个整型常量 `Max`,其值在程序运行期间不能改变。 2. **为什么引入 `const`?*...
`const`修饰符主要用于声明一个或多个变量为常量,即一旦赋值之后,其值不能被修改。`const`修饰符不仅可以用于变量声明,还可以用于函数参数、返回值等,具有以下几种典型用法: 1. **修饰类型**: - 当`const`...
1. **const作为修饰符**:在C++中,`const`可以修饰变量、函数参数、返回值等,用来表示某个实体是不可修改的。 - **示例**: ```cpp const int a = 100; // a是一个常量 ``` 2. **提高程序的安全性**:使用`...
4. **指针与const**:`const`与指针的结合使用是`const`修饰符的一个关键应用。`const`可以修饰指针的指针所指向的变量,也可以修饰指针本身。例如: - `const int *p`:表示`p`是一个指向`const int`的指针,不能...
"extern_volatile等修饰符的用法" 在C++语言中,extern、volatile、const、static等修饰符都是非常重要的,它们可以影响变量的存储方式、生命周期和访问权限等。本文将详细介绍这些修饰符的用法和特点。 一、const...
- **修饰顺序**: `const`修饰符的顺序很重要。例如,`const int *p`和`int const *p`表示相同的含义,都是指向`const int`的指针;而`int *const p`则表示指向`int`的`const`指针。 - **指针和对象的区别**: `const`...
- 由于 `Var` 是形参,所以这个 `const` 修饰符在这里并无实际意义,因为即使没有这个 `const`,形参也无法修改实参的值。 2. **修饰指针参数**: - `void function(const char *Var);` - 表示 `Var` 指向的内容...
- **const 修饰指针本身**:指向不可变数据的指针。 ```c++ int x = 10; int * const p = &x; // 指针 p 指向 x,但不能改变 p 指向的地址 ``` - **const 修饰指针所指向的数据**:只读数据的指针。 ```c++ ...
#### 二、const修饰符详解 `const`可以用来修饰以下几种类型: 1. **常量**:如`const int i = 10;`。 2. **指针**:指针本身和指针所指向的数据可以分别被声明为不可变。 3. **函数参数**:可以指定函数参数为...
1. **`const`修饰指针** - `const`位于星号左侧:`const int *a` 表示指针`a`指向的变量是常量,即`a`不能改变其指向的`int`型数值。 - `const`位于星号右侧:`int * const a` 表示指针`a`本身是常量,意味着它的...
多个`const`修饰符可以应用于同一个声明中,如`const int const *p`,表示p是一个指向const整型的const指针,意味着既不能通过p修改整型值,也不能改变p所指向的地址。 #### 五、强制类型转换与const性 虽然可以...
通过以上这些例子,我们可以看出,在C和C++中,类型声明可以通过组合基本类型、指针、数组以及`const`修饰符等方式来创建更加复杂的数据结构。理解这些复杂声明的关键在于逐步分析,从右向左读取声明,每次遇到一个...
#### const修饰符与指针 - **const修饰符**:`const`关键字用于指定变量或指针所指向的数据不可修改。它可以用于限制对数据的修改,提高代码的安全性和可维护性。 - **const int\* pi**:这种类型的指针指向一个...
const 是一个左结合的类型修饰符,它与其左侧的类型修饰符一起为一个类型修饰符。 3. const 用于函数的地址传递参数 void foo(const int *p) 这种形式通常用于在数组形式的参数中模拟传值调用。函数调用者声称:...
1. **对象的指针**:对象的指针是指向某个特定类实例的指针。通过这种指针,我们可以间接地访问和操作该对象的成员。定义一个对象指针的语法通常是这样的:`ClassName* pointerName = &objectName;` 这里`...
C++语言中的const关键字是一个非常重要的修饰符,它的核心作用是声明一个变量为常量,即不可修改。正确地理解和使用const,可以帮助提高程序的健壮性和安全性。本文将详细介绍const关键字在C++中的使用方法。 一、...