欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

const 修饰的指针

程序员文章站 2024-01-01 16:21:40
...

当指针变量没有被 const 修饰时,指针可以改变所指向的普通变量的值,也可以指向其他的普通变量

//第一种, 不使用 const 修饰的指针
    int a = 18;
	int b = 20;
	
	int* p1 = &a;
	cout << *p1 << endl;    //18
	*p1 = 19;                //可以通过指针改变所指向的变量的值
	cout << *p1 << endl;    //19
	p1 = &b;                //也可以改变指针所指向的变量
	cout << *p1 << endl;    //20

当 const 修饰符修饰的是指针变量的数据类型时,那么这个指针所指向的普通变量的值无法发生改变。

//第二种,const 修饰指针的数据类型
    int a = 18;
	int b = 20;
	
	const int* p2 = &a;
	//int const* p2 = &a;           //和上一种相同,都是修饰数据类型
	cout << *p2 << endl;            //18
	// *p2 = 19;                    //无法更改指针所指向的变量的值
	p2 = &b;                        //可以指向其他变量
	cout << *p2 << endl;            //20
	cout << b << endl;                //20
	//*p2 = 24;                       //也无法改变其他变量的值

当const 修饰指针变量的变量名时,这个指针变量无法指向其他的普通变量

//第三种,const 修饰指针变量
    int a = 18;
	int b = 20;
	
	int* const p3 = &a;
	cout << *p3 << endl;            //18
	*p3 = 19;                      //可以通过指针改变变量的值
	cout << a << endl;              //19
	//p3 = &b;                      //无法将指针指向其他变量

当 const 同时修饰指针变量的数据类型和变量名时,指针所指向的普通变量的值无法被改变,同时也无法指向其他的变量

//第四种,const 同时修饰指针的数据类型和指针变量
    int a = 18;
	int b = 20;
	
	//const int* const p4  = &a;
	int const* const p4 = &a;  
	cout << *p4 << endl;                  //18
	cout << a << endl;                     //18
	//*p4 = 19;                          //无法通过指针改变变量的值
	//p4 = &b;                             //无法将指针指向其他变量

当使用const 修饰指针时,看const 是在什么位置,如果const 离数据类型比较近,就是修饰的数据类型,此时无法通过指针变量对普通变量的值进行修改。如果const 离指针变量名比较近,就是修饰的变量名,此时该指针就无法在指向其他变量。
可以以“ * ” 号作为分隔,在“ * ” 号前面的就是离数据类型近,在“ * ” 号后面的就是离变量名近。

const 修饰的指针

相关标签: 指针

上一篇:

下一篇: